我有一个单词列表,例如
name
age
abhor
apple
ape
我希望通过传递一组随机字母(例如'apbecd'
)来对列表进行正则表达式现在必须返回列表中包含该组字母的所有单词。
例如:python retun_words.py apbelcdg
将返回
ape
apple
age
截至目前,我只能根据单词匹配返回单词。我如何才能达到上面提到的结果。 如果有任何其他方式来实现结果而不是正则表达式,请让我知道
提前致谢
答案 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