Python筛选含|或HHGTY的列表元素时输出冗余内容问题排查
问题原因
如果你的需求确实是筛选整个列表元素,只要元素包含|或HHGTY就完整打印该元素,那现有代码逻辑没有问题,你看到的SOME TEXT等内容属于命中条件的元素的自带内容,是符合预期的。
如果你的需求是筛选所有单独的行,只打印包含目标字符的行,那现有逻辑存在以下问题:
- 现有代码仅对列表的每个*完整元素(带换行符的长字符串)*做匹配,只要元素内任意位置存在目标字符,就会输出整个元素的全部内容,不会对元素内部的每行单独做判断,自然就会带出同元素下不带目标字符的行。
修正方案
如果要只输出符合要求的单独行,需要先把每个列表元素按换行符拆分,逐行判断再打印:
for s in lst: # 按换行拆分每行,若需要过滤空行可额外加if line.strip()判断 for line in s.split('\n'): if ("|" in line) or ("HHGTY" in line): print(line)
运行后输出会自动过滤掉多余内容:
A|1 B|5 C|3 D|0 E|0 D|4 E|1 G|1 --- HHGTY A|3 B|2 C|8 D|6 E|9 F|3 --- HHGTY
内容的提问来源于stack exchange,提问作者Ger Cas
相关产品推荐
相关产品推荐

