2013-04-17 26 views

cevap

14

Gerçekten basit bir uygulamasıdır:

out = "".join(c for c in asking if c not in ('!','.',':')) 

ve noktalama başka türlü eklemeye devam.

daha verimli bir şekilde

import string 
stringIn = "string.with.punctuation!" 
out = stringIn.translate(stringIn.maketrans("",""), string.punctuation) 

Düzenleme olacaktır: Best way to strip punctuation from a string in Python

+1

'strip()' çalışmaz. Http://docs.python.org/2/library/stdtypes.html#str.strip –

+0

@BrendenBrown sayfasına bakın. Python'a bakmadan yarım yıl ve ne biliyorsunuz. Utanç verici düzenleme devam ediyor. –

+0

Silmek için son satırı basitleştirebilirsiniz 'out = stringIn.translate (None, string.punctuation)' (bkz. Https://docs.python.org/2/library/stdtypes.html#str.translate) – asmaier

12
import string 

asking = "".join(l for l in asking if l not in string.punctuation) 

filtresi.

0

Bu çalışır, ancak daha iyi çözümler olabilir.

asking="hello! what's your name?" 
asking = ''.join([c for c in asking if c not in ('!', '?')]) 
print asking 
+0

bu senaryoda içsel listeye ihtiyacınız yok ve bu ''hellowhat isname' 'değerini döndürecektir. –

+0

@BurhanKhalid Doğru iç liste gerekli değil, ancak çıktı doğru. –

0

Şerit çalışmaz: Burada verimliliği ve diğer uygulamaları hakkında biraz daha tartışma yoktur. filtreli http://docs.python.org/2/library/stdtypes.html#str.strip

Having fun:

import string 
asking = "hello! what's your name?" 
predicate = lambda x:x not in string.punctuation 
filter(predicate, asking) 
+0

. Python 3.x kullanıyorsanız, 'list()' işlevinin tamamını 'filter()' işlevine sarmak önemlidir, çünkü birçok yerleşik fonksiyon artık 'listeler' yerine özel 'iterable' nesneleri döndürmez. Ayrıca, ikinci satırdaki dizgenin etrafında 'input' (veya 'raw_input' için Python 2.x için) '' koyarak göz ardı etmiş gibi görünüyorsunuz ve son satır için 'soring = ...' gibi bir şey koymuş olmalısınız. – SimonT

+1

Bu yaklaşımın 3.x'te önerilmediği görülüyor: http://stackoverflow.com/questions/13638898/how-to-use-filter-map-and-reduce-in-python-3-3-0 –

+0

'filter '' lambda'yı kullanmanız gerektiğinde çirkin ve yavaş, ne yazık ki alternatifiniz '' '.join (ifilterfalse (kısmi (içerir, noktalama işareti), sorar)) '' – jamylak

İlgili konular