【发布时间】:2018-08-03 13:12:37
【问题描述】:
这可能是一个非常明显的错误,因为我对编码很陌生,但我正在尝试读取某个值的文件,我将使用 re.search 和 splice 收集该文件,因为我只知道文本之前和之后。
我遇到了一个恼人的错误。当我使用 re.search(r"firstPart(.*?)secondPart", data).group(1) 它返回
Traceback (most recent call last):
File "<stdin>", line 10, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
这行有什么问题:
englishWord = re.search(r"<i>(.*?)</i>", str(englishWord)).group(1)
如果您阅读代码,您会看到我做了一些不必要的行,而不是在 re.search 函数中写入整个字符串,我将只使用一点点,然后在另一个函数中添加或删除文本。这是因为如果我在 re.search 函数中正常执行所有操作,它就不起作用。
可能最烦人和最令人困惑的是,如果我在 "englishWord = re.search(r"(.*?)", str(englishWord)).group( 1)" 然后我运行它,它可以工作,但是如果我一次运行所有代码,我会得到那个错误。知道为什么吗?我怎样才能解决这个问题?谢谢! (我使用的是 python 3.6)
我的代码 vvv
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
import re
import itertools
with open('Desktop/data.txt', 'r') as myfile:
data=myfile.read().replace('\n', '')
num = 0
for x in itertools.repeat(None, 8):
num = int(num) + 1
if int(num) < 10:
num = '0' + str(num)
firstString = re.search(r"id=\"question_" + num + "_whole_question\" data-sidebar-reference=\"\"> (.*?) <input", data).group(1)
secondString = re.search(r"id=\"question_" + num + "_wol_1\"(.*?) </div>", data).group(1)
secondString = secondString.replace(" name=\"question_" + num + "_wol_1\" onchange=\"has_unsaved_work();\" size=\"10\" type=\"text\" />", "")
finalString = firstString + " _" + secondString
englishWord = re.search(r"(<i><span lang=\"en-US\">(.*?)</span></i>)", finalString)
englishWord = re.search(r"<i>(.*?)</i>", str(englishWord)).group(1)
englishWord = "<i>" + englishWord + "</i>"
finalString = finalString.replace(englishWord, "")
finalString = finalString.replace("()", "")
print (finalString)
【问题讨论】:
-
re.search() 如果没有匹配则返回 None。
-
似乎您正在尝试使用正则表达式来解析 html。请不要,用漂亮的汤。阅读此内容以了解原因:stackoverflow.com/questions/1732348/…
标签: python string python-3.x substring