正则表达式返回文件中的单词集,可以用作为参数传递的字母拼写(python)

时间:2016-09-19 08:32:37

标签: python regex

我有一个单词列表,例如

name
age
abhor
apple
ape

我希望通过传递一组随机字母(例如'apbecd'

)来对列表进行正则表达式

现在必须返回列表中包含该组字母的所有单词。

例如:python retun_words.py apbelcdg

将返回

ape
apple
age

截至目前,我只能根据单词匹配返回单词。我如何才能达到上面提到的结果。 如果有任何其他方式来实现结果而不是正则表达式,请让我知道

提前致谢

3 个答案:

答案 0 :(得分:1)

在这里,如果你不想使用正则表达式,使用set和return项也是一种方法。

string_list = ["name", "age", "abhor", "apple", "ape"]
allowed_characters = "apbelcdg"
character_set = set(allowed_charcters)
print [item for item in string_list if not set(item)-character_set]

这将为您提供符合字符集的字符串列表。

但是,如果正则表达式是你最想要的,那么我们就去: - )

from re import match
string_list = ["name", "age", "abhor", "apple", "ape"]
allowed_characters = "apbelcdg"
print [item for item in string_list if match('[%s]*$' % (allowed_characters), item)]

答案 1 :(得分:1)

我相信shellmode的方法需要一个小修复,因为它不适用于被检查的字母与单词中的最后一个字母相同的情况,但该字本身包含的字母不是来自字母列表。我相信这段代码可行:

import sys
word_list = ['name', 'age', 'abhor', 'apple', 'ape']
letter_list = sys.argv[1]

for word in word_list:
    for counter,letter in enumerate(word):
        if letter not in letter_list:
            break
        if counter == len(word)-1: #reached the end of word
            print word 

答案 2 :(得分:0)

没有必要使用正则表达式。以下代码有效。

import sys
word_list = ['name', 'age', 'abhor', 'apple', 'ape']
letter_list = sys.argv[1]

for word in word_list:
    for letter in word:
        if letter not in letter_list:
            break
        elif letter == word[-1]:
            print word

输出

[root@mbp:~]# python return_words.py apbelcdg
age
apple
ape