You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python两列表字符串匹配结果为空,求排查解决建议

解决你的正则匹配空列表问题

嘿,我发现你的代码有两个关键问题导致返回空列表,咱们一步步来修正:


问题1:用错了正则匹配方法

你用的 re.match() 只会从字符串的起始位置开始匹配,但List1里的目标USAA编号是在每行中间(比如示例里的USAA032812134在第3和第8个字段),所以这个方法根本找不到匹配项。

应该换成 re.search() —— 它会在整个字符串范围内查找是否存在匹配的模式,这才是你需要的逻辑。

问题2:List2里的元素带换行符

你的List2每个元素末尾都有\n(比如'USAA032367605\n'),但List1的行里并没有这个换行符,这就导致正则表达式在匹配时找不到完全一致的内容。必须先把这些多余的换行符清理掉。


修正后的完整代码

import re

# 第一步:清理List2的换行符,同时过滤可能的空字符串
cleaned_list2 = [item.strip() for item in List2 if item.strip()]

# 第二步:编译正则表达式(如果编号含特殊字符,记得用re.escape转义)
pattern = re.compile('|'.join(re.escape(item) for item in cleaned_list2))

# 第三步:遍历List1查找匹配项
found = []
for line in List1:
    if pattern.search(line):
        found.append(line)

额外提示

如果List2里的编号可能包含正则特殊字符(比如.、*这类),一定要用re.escape()来转义每个元素,否则会破坏正则的匹配逻辑,导致意外的结果。

这样处理后,就能正确筛选出List1中包含List2任意编号的所有行啦!

内容的提问来源于stack exchange,提问作者lagn91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:31:01