我正在编写一个程序,以确定.txt文件中是否有三组连续的双字母(例如bookkeeper(。到目前为止,我有:
import re
text = open(r'C:UsersJimbo.WimboDesktopList.txt')
for line in text:
x = re.finditer(r'((w)2)+', line)
if True:
print("Yes")
Else:
print("No")
CCD_ 1有5个单词。有一个单词的末尾有三组连续的双字母,但它打印的是5〃;是"s.使用re和os,我能做些什么来修复它?
您不需要re.finditer()
,只需使用re.search()
即可。
您的regexp是错误的,它将至少匹配1组重复字符,而不是3个。
if True:
没有做任何有用的事情。这并不意味着";如果最后一个赋值是真值";。您需要测试regexp搜索的结果。
使用any()
测试条件是否与文件中的任何一行匹配。您的代码将为文件中的每一行打印"是"或"否"。
if any(re.search(r'((w)2)){3}', line) for line in text):
print('Yes')
else:
print('No')
我认为您的正则表达式不正确。检查正则表达式的一个好方法是使用在线正则表达式检查器,您可以根据提供的任何数量的字符串测试正则表达式。
以下是您查询的一个可能解决方案:
import re
text = open(r'C:UsersJimbo.WimboDesktopList.txt')
for line in text:
x = len(re.findall(r'(.)1', line))
if x == 3:
print(f"Found a word with 3 duplicate letters : {line}")
else:
print(f"Word: {line}, Duplicate letters : {x}")
希望这能有所帮助。