我正在尝试制作一个python程序来返回具有双连续字母的单词(例如,门,球,地板)。我的代码到现在为止如下所示,但是它将文件中的所有单词分成两个字母的部分:
def text_processing( file_location ):
import re
file_variable = open( file_location )
lines = file_variable.read()
print lines
double_letter = re.compile('[A-Z]{2,2}', re.IGNORECASE)
double_letter_list = double_letter.findall(lines)
print double_letter_list
答案 0 :(得分:6)
试试这个正则表达式:r"\w*(\w)\1\w*"
答案 1 :(得分:2)
re.findall('(\w*(\w)\\2\w*)', file_variable.read())
将返回元组列表(单词,重复字母),然后您可以只获取所有第一个元素。
示例:
>>> re.findall('(\w*(\w)\\2\w*)', 'some words here: boo, shoo, wooooo, etc.')
[('boo', 'o'), ('shoo', 'o'), ('wooooo', 'o')]
答案 2 :(得分:1)
你可以试试这个:
def text_processing( file_location ):
import re
file_variable = open( file_location )
lines = file_variable.readlines()
double_letter = re.compile(r'.*(.)\1.*', re.IGNORECASE)
double_letter_list = []
for line in lines:
for word in line.split(" "):
match = double_letter.match(word)
if match:
double_letter_list.append(match.group())
print double_letter_list
它尝试将模式与文件中的每个单词进行匹配,如果匹配,则将其附加到双字列表中。