0
def de_punctuate(xs):
return re.findall(r"[\w']+(?:-[\w']+)*", xs)
numbers = partial(re.search, r'[0,9]')
def no_numbers(xs):
return filterfalse(numbers, xs)
def string2filter(xs):
return no_numbers(de_punctuate(xs))
for d in data:
print(d)
print(list(string2filter(d)))
輸出:問題再和數字
Nordmann brukte mobilen i ett døgn i Afrika - må ut med 137.000 kroner
['Nordmann', 'brukte', 'mobilen', 'i', 'ett', 'døgn', 'i', 'Afrika', 'må', 'ut', 'med', '137', 'kroner']
400.000 japanere evakueres fra flom
['japanere', 'evakueres', 'fra', 'flom']
Utvist i 2009 - nå siktet for overfallsvoldtekt i 2011
['Utvist', 'i', 'nå', 'siktet', 'for', 'overfallsvoldtekt', 'i']
Selvmordsangrep mot afghansk bryllupsfest - Minst 22 drepte
['Selvmordsangrep', 'mot', 'afghansk', 'bryllupsfest', 'Minst', '22', 'drepte']
我感到困惑,爲什麼輸出是相對於數字並不一致。不應該有任何。在某些情況下,這是正確的,但對於其他情況,他們仍然存在。 看到輸出1和4.
有什麼想法嗎?
我想測試的情況下,每個word
有喜歡的錯誤:this3
我可以包括在第一重新表述數值搜索,這樣我就可以不用做雙通?
的答案是:
def stripsplit(xs):
""" return a list, excluding numbers and punctuation (except joining hyphens) """
return re.findall(r"[a-zA-ZåøæÅØÆ']+(?:-[a-zA-ZåøæÅØÆ']+)*", xs)
那麼工作!你會推薦在第一個re.findall中包含這個嗎? – beoliver 2012-07-14 15:44:00
as in,how to add this to're.findall(r「[\ w'] +(?: - [\ w'] +)*」,xs)' – beoliver 2012-07-14 15:45:08
如果我使用a-zA-Z它exludeså,ø,æ... – beoliver 2012-07-14 15:51:19