首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >re和numbers的问题

re和numbers的问题
EN

Stack Overflow用户
提问于 2012-07-14 23:36:09
回答 1查看 53关注 0票数 0
代码语言:javascript
复制
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)))

输出:

代码语言:javascript
复制
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

我可以在第一个重新表达式中包括一个数字搜索,这样我就不必进行双重遍历了吗?

答案是:

代码语言:javascript
复制
def stripsplit(xs):
    """ return a list, excluding numbers and punctuation (except joining hyphens) """
    return re.findall(r"[a-zA-Z帿ŨÆ']+(?:-[a-zA-Z帿ŨÆ']+)*", xs)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-14 23:41:45

要搜索数字,您应该使用'[0-9]''\d',而不是r'[0,9]'

([0,9]匹配'0‘,’,‘或'9',这不是你想说的)

编辑: \w相当于[a-zA-Z0-9_]。为什么不直接使用[a-zA-Z']呢?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11485037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档