gpt4 book ai didi

python - NLTK 创建的字符串正则表达式不起作用

转载 作者:行者123 更新时间:2023-11-30 23:29:08 25 4
gpt4 key购买 nike

我正在尝试对从 NLTK 获得的字符串进行正则表达式匹配。我有一个 Stock 类,其方法可以从 edgar 获取 10k,并使用 NLTK 将它们下载到字符串中。

def get_raw_10ks(self):
for file in self.files_10k:
data = self.__get_data_from_url(file)
raw = nltk.clean_html(data)
self.raw_10ks.append(raw)

然后,在我的程序本身中,我有

stock.get_raw_10ks()
matchObj = re.match("Indicates", stock.raw_10ks[0])
print matchObj.group()

我收到错误

print matchObj.group()
AttributeError: 'NoneType' object has no attribute 'group'

但是,当我检查stock.raw_10ks[0]的类型时,它是一个字符串,当我打印出来时,最后一行是“Indicates management compensatory plan”,所以我不确定出了什么问题。我检查了 re 和 nltk 是否正确导入。

最佳答案

re.match() 匹配输入字符串开头的模式。您应该使用 re.search() 来代替。

# match()
>>> re.match('Indicates', 'Indicates management compensatory')
<_sre.SRE_Match object at 0x0000000002CC8100>
>>> re.match('Indicates', 'This Indicates management compensatory')

# search()
>>> re.search('Indicates', 'This Indicates management compensatory')
<_sre.SRE_Match object at 0x0000000002CC8168>

参见search() vs match() .

<小时/>

为了使程序健壮,请检查调用的返回值:

matchObj = re.search("Indicates", stock.raw_10ks[0])
if matchObj is not None: # OR if matchObj:
print matchObj.group()
else:
print 'No match found.'
<小时/>

顺便说一句,如果您想检查 Indicates 是否在字符串中,请使用 in operator更优选:

>>> 'Indicates' in 'This Indicates management compensatory'
True
>>> 'Indicates' in 'This management compensatory'
False

关于python - NLTK 创建的字符串正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21274309/

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