我想使用正则表达式搜索表达式来搜索指定的字符串。我写了下面的代码。但是,它显示了一个错误。在分隔符中,装入要搜索的值。如果存在,则应将其加载到另一个列表。
import re
value_to_separate = ["prinec-how,are_you&&smile#isfine1"]
separator = ["&&smile","prinec-","#isfine1",",are_you","-how,are"]
for sep in separator:
for val_sep in value_to_separate:
val_sep = re.search(separator,val_sep)
print(val_sep)
必填输出:
["&&smile","prinec-","#isfine1",",are_you","-how,are"]
我该如何解决这个问题?
答案 0 :(得分:2)
您绝对不需要正则表达式。真的太过分了。使用列表理解:
[x for x in separator if x in value_to_separate[0]]
代码:
value_to_separate = ["prinec-how,are_you&&smile#isfine1"]
separator = ["&&smile","prinec-","#isfine1",",are_you","-how,are"]
print([x for x in separator if x in value_to_separate[0]])
以所需格式输出:
['&&smile', 'prinec-', '#isfine1', ',are_you', '-how,are']
答案 1 :(得分:1)
您正在将separator
列表传递到re.search
,而不是单独的分隔符项目sep
。
将re.search(separator,val_sep)
更改为re.search(sep,val_sep)
同时使用val_sep.group(0)
获取您的实际匹配字符串
然后您的代码将更改为。
import re
value_to_separate = ["prinec-how,are_you&&smile#isfine1"]
separator = ["&&smile","prinec-","#isfine1",",are_you","-how,are"]
for sep in separator:
for val_sep in value_to_separate:
val_sep = re.search(sep,val_sep)
print(val_sep.group(0))
输出将是
&&smile
prinec-
#isfine1
,are_you
-how,are