为什么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
,但我得到的代码是T
,w
,...
我还希望代码能够在下一行搜索。例如:如果我说re.findall(r'\bTwinkle\b.*?\wonder\b', text1)
它应该给Twinkle Twinkle little star How I wonder
。我怎样才能做到这一点? for line in text1
没有帮助。
PS:poem.txt
包含4行诗Twinkle twinkle little star
错误1:text1
是一个字符串对象,然后说明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
就不会是一个字符串而是一个行数组。
我建议看看documentation的re.findall
。
你的具体问题的答案是re.findall(r'\bTwinkle\b.*?\blittle\b', text1,re.DOTALL)
orre.findall(r'\bTwinkle\b.*?\blittle\b', text1,re.MULTILINE)
。