gpt4 book ai didi

python - 正则表达式不以相同的方式拆分文本

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:36 24 4
gpt4 key购买 nike

我有一个带有 scrapy 的蜘蛛,我正在使用正则表达式来拆分每个单词的文本。它适用于英语和韩语,但当我尝试抓取西类牙语时,它并没有把事情搞砸。

foo = 'the quick brown fox'
english = foo.xpath('//*[@id="mw-content-text"]//p').xpath('string(.)').re(ur'[a-zA-Z\'-]+')
english = ['the','quick','brown','fox',]

foo = '빨른 깨를 있어요'
korean = foo.xpath('//*[@id="mw-content-text"]//p').xpath('string(.)').re(ur'[\uac00-\ud7af]+')
korean = ['빨른','깨를','있어요']

foo = 'el zorro marron rapido'
spanish = foo.xpath('//*[@id="mw-content-text"]//p').xpath('string(.)').re(ur'[\u0000-\u00FF]+')
spanish = ['el zorro marron rapido']

我只是不明白为什么这会与其他语言有任何不同的对待。

最佳答案

与其他正则表达式不同,[\u0000-\u00FF] 包含空格字符 (\u0020)。

>>> import re
>>> re.search(ur'[a-zA-Z\'-]', ' ') # does not match space
>>> re.search(ur'[\uac00-\ud7af]', ' ') # does not match space
>>> re.search(ur'[\u0000-\u00FF]', ' ') # match space
<_sre.SRE_Match object at 0x7fe024fc4648>

调整正则表达式以排除空格字符。例如:[\u0000-\u001f\u0021-\u00FF]+


但是,这里没有必要使用正则表达式。只需使用 str.split足以让单词被空格分开:

>>> 'the quick brown fox'.split()
['the', 'quick', 'brown', 'fox']
>>> '빨른 깨를 있어요'.split()
['빨른', '깨를', '있어요']
>>> 'el zorro marron rapido'.split()
['el', 'zorro', 'marron', 'rapido']

关于python - 正则表达式不以相同的方式拆分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33949374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com