我有一个字符串列表。我只想提取每个字符串中具有特定字符序列的单词。
例如
l1=["grad madd have", "ddim middle left"]
我想要所有包含序列“dd”的单词
所以我想得到
[["madd"], ["ddim", "middle"]]
我一直在尝试使用
形式的模式[re.findall(r'(\b.*?dd.*\s+)',word) for word in l1]
但收效甚微
答案 0 :(得分:1)
您可以使用列表理解。你不需要正则表达式来完成你想要做的事情。
l1=["grad madd have", "ddim middle left"]
print([s for a in l1 for s in a.split() if 'dd' in s])
这循环遍历l1
并按空格字符拆分每个值。然后它测试子字符串以查看它是否包含dd
并返回它,如果它包含它。
答案 1 :(得分:1)
你很接近,你想用\w*
匹配单词字符0到很多次:
[re.findall(r'\w*dd\w*', word) for word in l1]
答案 2 :(得分:0)
您可以尝试使用此正则表达式:\b\w*dd\w*\b
答案 3 :(得分:0)
在一行中尝试:
l1=["grad madd have", "ddim middle left"]
print(list(map(lambda x:list(filter(lambda y:'dd' in y,x.split())),l1)))
输出:
[['madd'], ['ddim', 'middle']]