Python

2015-04-28 10 views
8
kesme işareti

hariç unicode dizesinden noktalama kaldırarak bu birkaç konu buldum ve bu çözüm buldu:Python

sentence=re.sub(ur"[^\P{P}'|-]+",'',sentence) 

Bu 'hariç her noktalamayı kaldırmak gerekir, sorun da cümlenin diğer her şeyi şeritler olduğunu.

Örnek:

istediğim şey noktalama işaretleri olmadan cümleyi tutmaktır tabii
>>> sentence="warhol's art used many types of media, including hand drawing, painting, printmaking, photography, silk screening, sculpture, film, and music." 
>>> sentence=re.sub(ur"[^\P{P}']+",'',sentence) 
>>> print sentence 
' 

ve "warhol yönettiği" kalır

İstenilen çıkış olduğu gibi:

"warhol's art used many types of media including hand drawing painting printmaking photography silk screening sculpture film and music" 
"austro-hungarian empire" 

Düzenleme: Ben de

tbl = dict.fromkeys(i for i in xrange(sys.maxunicode) 
    if unicodedata.category(unichr(i)).startswith('P')) 
sentence = sentence.translate(tbl) 
kullanarak çalıştı

ama bu

+0

(http://stackoverflow.com/questions/21209024/python-regex-remove-all-punctuation-except-hyphen-for-unicode-string) (dışında her şeye uyar) ' – KameeCoding

+0

Oops' dışında noktalama işareti olan herşeyi düzeltmelisiniz; Yeni 'regex' modüllerinde bu kadar değil. –

cevap

7

değil Kaldırılmasını istediğiniz yapmak tüm unsurları, yani \w, \d, \s vb Bu ^ operatör köşeli parantez içinde olan anlamı budur belirtin her noktalama şeritler. bunu diyor [buradan]

>>> import re 
>>> sentence="warhol's art used many types of media, including hand drawing, painting, printmaking, photography, silk screening, sculpture, film, and music." 
>>> print re.sub(ur"[^\w\d'\s]+",'',sentence) 
warhol's art used many types of media including hand drawing painting printmaking photography silk screening sculpture film and music 
>>> 
+0

bu, kesme için çalışır, nasıl daha fazla istisna ekleyebilirim? gibi - ya da benzeri? – KameeCoding

+0

sadece '\ -' yerine' ur '.. '' –