:Bir dizedeki tüm noktalama işaretleri nasıl kaldırılır? (Python) Örneğin
asking="hello! what's your name?"
Sadece bunu yapabilir mi? string.punctuation
ile
asking.strip("!'?")
:Bir dizedeki tüm noktalama işaretleri nasıl kaldırılır? (Python) Örneğin
asking="hello! what's your name?"
Sadece bunu yapabilir mi? string.punctuation
ile
asking.strip("!'?")
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
'strip()' çalışmaz. Http://docs.python.org/2/library/stdtypes.html#str.strip –
@BrendenBrown sayfasına bakın. Python'a bakmadan yarım yıl ve ne biliyorsunuz. Utanç verici düzenleme devam ediyor. –
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
import string
asking = "".join(l for l in asking if l not in string.punctuation)
filtresi.
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
bu senaryoda içsel listeye ihtiyacınız yok ve bu ''hellowhat isname' 'değerini döndürecektir. –
@BurhanKhalid Doğru iç liste gerekli değil, ancak çıktı doğru. –
Ş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)
. 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
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 –
'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
sen http://stackoverflow.com/questions/3939361/remove-specific-characters baktı mı sadece baştaki ve sondaki örneklerini arasında değil herşeyi kaldırır -Fit-in-python? –