使用Python csv模块搜索CSV值并输出整行的异常问题
解决CSV文件搜索值并打印整行的问题
你的问题出在csv.reader的默认分隔符上:默认情况下csv.reader用逗号,分割每行内容,但你的文件每行是key : value格式,没有逗号,所以每行被解析成单个字符串的列表(比如['name : 222'])。此时'222' in line是检查列表中是否存在完全等于'222'的元素,自然匹配不到。
下面给你三种可行的解决方案:
方案1:指定正确的分隔符
既然你的行是用:(空格+冒号+空格)分隔的,直接给csv.reader指定分隔符:
import csv fin = "你的文件名.csv" # 替换成实际文件名 target = "222" with open(fin, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=' : ') for line in reader: if target in line: print(' : '.join(line)) # 还原成原格式打印,或直接print(line)查看列表
方案2:直接按文本行读取(更适配你的文件格式)
你的文件其实更像普通键值对文本,没必要用csv模块,直接逐行读取检查:
fin = "你的文件名.csv" target = "222" with open(fin, 'r') as f: for line in f: line = line.strip() # 去掉换行符 if target in line: print(line)
方案3:遍历列表元素检查包含关系
如果一定要用csv模块且不修改分隔符,可以遍历每行的每个元素,检查是否包含目标值:
import csv fin = "你的文件名.csv" target = "222" with open(fin, 'r') as csvfile: reader = csv.reader(csvfile) for line in reader: # 检查该行的每个元素中是否包含目标值 if any(target in item for item in line): print(''.join(line)) # 拼接成原行格式打印
内容的提问来源于stack exchange,提问作者Amin Estesnaei
相关产品推荐
相关产品推荐

