比较特定的字符串和单词python

时间:2018-11-11 16:53:36

标签: python string list word

说我有一个特定的字符串和一个字符串列表。 我想将列表(字符串)中的所有单词添加到新列表中 就像图案一样 对于示例

list of strings = ['string1','string2'...] 
pattern =__letter__letter_ ('_c__ye_' for instance)

我需要在与模式相同的位置添加所有由相同字母组成的字符串,并且字符串的长度相同。 例如:

new_list = ['aczxyep','zcisyef'...]

我已经尝试过了:

def pattern_word_equality(words,pattern):
list1 = []
for word in words:
    for letter in word:
        if letter in pattern:
            list1.append(word)
return list1

帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

如果您的图案很简单,例如 _c__ye _ ,那么您可以在特定位置查找字符:

TextInputLayout

如果您的模式变得越来越复杂,则可以开始使用regular expressions

words = ['aczxyep', 'cxxye', 'zcisyef', 'abcdefg']
result1 = list(filter(lambda w: w[1] == 'c' and w[4:6] == 'ye', words))

输出:

pat = re.compile("^.c..ye.$")
result2 = list(filter(lambda w: pat.match(w), words))

答案 1 :(得分:0)

这有效:

words = ['aczxyep', 'cxxye', 'zcisyef', 'abcdefg']
pattern = []
for i in range(len(words)):
    if (words[i])[1].lower() == 'c' and (words[i])[4:6].lower() == 'ye':
        pattern.append(words[i])
print(pattern)

首先定义单词和模式列表。然后,使用wordslen(words)中循环查找项目数量。然后,通过查看第二个字母是否为c以及第5个和第6个字母是否为y和e,来确定i项号是否遵循该模式。如果是这样,那么它将把该单词附加到模式上,并将其全部打印出来。