返回双连续字母的单词

时间:2012-03-06 23:35:27

标签: python regex

我正在尝试制作一个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

3 个答案:

答案 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

它尝试将模式与文件中的每个单词进行匹配,如果匹配,则将其附加到双字列表中。