Python 如何在CSV行中搜索特定列中的字符串,如果找到,则将整行打印到文件中
很抱歉,我是Python的初学者,需要一些帮助 我有一个很大的CSV文件,项目之间用逗号分隔,我正试图用Python处理它。以下是CSV中的一行示例 美国东北部城市123大街12345号,美国东北部城市123大街12345号,美国东北部城市123大街12345号,美国东北部城市68355号,史密斯农场123123号,(123)555-5555,(321)555-5555,JSMITH@HOTMAIL.COM,16111112013年7月15日,1993年12月22日,东北,2,1\par 我希望我的代码扫描每一行,只查看第9项(状态)。对于与我的查询匹配的每个项目,我希望将整行内容写入CSV 我的问题是,我的代码会在整行中找到我的查询的每一次出现,而不仅仅是第9项。例如,如果我扫描查找“NE”,它将在我的CSV中写入上面的行,但也包含字符串“NEARY ROAD” 对不起,如果我的术语是关闭的,再一次,我是一个初学者。任何帮助都将不胜感激 我在下面列出了我的编码:Python 如何在CSV行中搜索特定列中的字符串,如果找到,则将整行打印到文件中,python,string,csv,search,Python,String,Csv,Search,很抱歉,我是Python的初学者,需要一些帮助 我有一个很大的CSV文件,项目之间用逗号分隔,我正试图用Python处理它。以下是CSV中的一行示例 美国东北部城市123大街12345号,美国东北部城市123大街12345号,美国东北部城市123大街12345号,美国东北部城市68355号,史密斯农场123123号,(123)555-5555,(321)555-5555,JSMITH@HOTMAIL.COM,16111112013年7月15日,1993年12月22日,东北,2,1\par 我希望
import csv
with open('Sample.csv', 'rb') as f, open('NE_Sample.csv', 'wb') as outf:
reader = csv.reader(f, delimiter=',')
writer = csv.writer(outf)
for line in f:
if "NE" in line:
print ('Found: []'.format(line))
writer.writerow([line])
实际上,您并没有使用
阅读器
来读取输入CSV,您只是从文件本身读取原始行
固定版本如下所示(未经测试):
更改如下:
- 我们不是迭代输入文件的行,而是迭代由
解析的行(每个行都是该行中每个值的读取器
)列表
- 我们检查行中的第9项(即
)是否等于行[8]
“NE”
- 如果是这样,我们将该行按原样传递到编写器的
方法,从而将其输出到输出文件writerow
- 我还修复了您的
语句中的一个打字错误-打印
方法使用大括号(而不是方括号)来标记替换位置格式
import csv
with open('Sample.csv', 'rb') as f, open('NE_Sample.csv', 'wb') as outf:
reader = csv.reader(f, delimiter=',')
writer = csv.writer(outf)
for row in reader:
if "NE" in row:
print ('Found: {}'.format(row))
writer.writerow(row)
如果代码中的第
行中的“NE”正在尝试确定“NE”
是否是字符串行
的子字符串,其工作方式不符合预期。行
是输入文件的原始行
如果您在输入文件的第行使用了
如果第行中的“NE:
其中行
被解析,那么您正在进行精确的元素匹配。@J.Folkens:没问题!
import csv
with open('Sample.csv', 'rb') as f, open('NE_Sample.csv', 'wb') as outf:
reader = csv.reader(f, delimiter=',')
writer = csv.writer(outf)
for row in reader:
if "NE" in row:
print ('Found: {}'.format(row))
writer.writerow(row)