为什么re.findall()不去txt文件的下一行搜索字母?

2024-05-13 18:38:20 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么re.findall返回字母表而不是单词

Tint = open('poem.txt')
text1 = Tint.read()
output = []
for line in text1:
    line = line.rstrip()
    if re.findall(r'\bTwinkle\b.*?\blittle\b', text1):
        output.append(line)

目前我期望的输出是Twinkle Twinkle little,但是我用这段代码得到的是Tw

我也希望代码能够在下一行搜索。例如:如果我说re.findall(r'\bTwinkle\b.*?\wonder\b', text1),它应该给出Twinkle Twinkle little star How I wonder。我该怎么做for line in text1没有帮助

附言:poem.txt包含诗歌的4行Twinkle twinkle little star


Tags: 代码inretxtforoutputlinewonder
2条回答

我建议看看re.findalldocumentation

具体问题的答案是re.findall(r'\bTwinkle\b.*?\blittle\b', text1,re.DOTALL)re.findall(r'\bTwinkle\b.*?\blittle\b', text1,re.MULTILINE)

错误1text1是一个字符串对象,然后声明for line in text1意味着line将是一个字符

错误2:您每次都在整个text1中搜索,而不是在单行中

我想你想要这样的东西:

Tint=open('poem.txt')
text1=Tint.readlines()
output=[]
for line in text1:
    if re.findall(r'\bTwinkle\b.*?\blittle\b', line.rstrip()) :
        output.append(line)

注意readlines()函数的用法,这样text1就不是一个字符串而是一个行数组

相关问题 更多 >