[英]how to read from and write to a csv file using csv module
import csv
with open("C:\\Users\\ki386179\\Desktop\\output.csv","r") as f:
reader = csv.reader(f)
for row in reader:
if 'india' in row:
pass
if 'india' not in row:
with open("C:\\Users\\ki386179\\Desktop\\output.csv","w") as f:
writer = csv.writer(f)
writer.writerow('india')
我试图实现这样的事情,检查特定列中的特定值,如果没有写入它。
当您正在读取文件时,您无法写入文件。 另外,您肯定不想像当前的逻辑那样要求每一行都包含字符串吗?
如果没有任何行匹配,我猜您想在最后添加一行:
import csv
seen_string = False
with open("C:\\Users\\ki386179\\Desktop\\output.csv","r") as f:
reader = csv.reader(f)
for row in reader:
if 'india' in row:
seen_string = True
break
if not seen_string:
# Notice append mode; "a" not "w"
with open("C:\\Users\\ki386179\\Desktop\\output.csv","a") as f1:
# Noice this one is f1
writer = csv.writer(f1)
writer.writerow('india')
也许还注意到in
寻找一个子串; 如果文件包含例如amerindian",则代码会将其视为匹配项。如果这是您想要的,请使用==
检查字符串是否相等。
您可以使用r+
模式进行读取和写入。 尽管很难理解您在此处尝试实现的目标,但下面显示了可以完成您可能尝试实现的目标的示例代码。 我将上面的代码放在脚本india.py
并使其可执行( chmod +x india.py
)
#!/usr/bin/env python
import sys
from csv import reader, writer
with open(sys.argv[1], "r+") as f:
for row in reader(f):
if "india" in row:
break
else:
writer(f).writerow("india")
试运行
$ cat test_write.csv
us,canada,mexico
france,germany,norway
brazil,argentina,colombia
china,japan,korea
$ ./india.py test_write.csv
$ cat test_write.csv
us,canada,mexico
france,germany,norway
brazil,argentina,colombia
china,japan,korea
i,n,d,i,a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.