根据分隔符获取列表中的值

时间:2019-04-28 15:52:35

标签: python regex python-3.x regex-group

我想使用正则表达式搜索表达式来搜索指定的字符串。我写了下面的代码。但是,它显示了一个错误。在分隔符中,装入要搜索的值。如果存在,则应将其加载到另一个列表。

代码

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"]

我该如何解决这个问题?

2 个答案:

答案 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