我试图用Python在CSV中将某一列(例如第6列的Author)中的空白值替换为“DMD”。我对这个程序还不太熟悉,所以很多行话都让我觉得很奇怪。我已经阅读了CSV-Python文档,但似乎没有什么是我的问题所特有的。这是我目前所拥有的。它不会跑。我得到错误'dict'对象没有属性替换。似乎在字典里应该有类似的东西可以替换。而且,我不完全确定我搜索字段的方法是否准确。任何指导都将不胜感激。
import csv
inputFileName = "C:\Author.csv"
outputFileName = os.path.splitext(inputFileName)[0] + "_edited.csv"
field = ['Author']
with open(inputFileName) as infile, open(outputFileName, "w") as outfile:
r = csv.DictReader(infile)
w = csv.DictWriter(outfile, field)
w.writeheader()
for row in r:
row.replace(" ","DMD")
w.writerow(row)
(1)要使用os.path.splitest,需要添加一个
import os
(2)dict没有替换方法;dict不是字符串。如果试图更改dict项的值字符串,则需要按键引用该dict项,例如
row['Author']
。如果第['Author']行是一个字符串(在您的情况下应该是这样),您可以对其进行替换。听起来您需要一个Python字典的简介,请参见示例http://www.sthurlow.com/python/lesson06/。(3)这样做的方法,也处理多个空间,没有空间等领域,将如下所示:
或者
干杯
字典不需要
replace
方法,因为简单赋值为您实现了这一点:其中
header-6
是第六列的名称还要注意,您对
DictReader
的调用似乎具有错误的fields
属性。该参数应该是一个列表(或其他序列),按顺序包含新CSV的头。就您的目的而言,使用vanilla reader似乎更简单:
我觉得你很接近。您需要将字段名传递给
writer
,然后可以直接编辑row
,因为它只是一个字典。例如:转弯
进入
我喜欢使用
if not somestring.strip():
,因为这样就无需考虑是否有空格、一个空格、十七个空格和一个制表符。我也更喜欢DictReader
而不是标准阅读器,因为这样你就不必记住Author
所在的列。[注:以上假设Python 2,而不是3。]
相关问题 更多 >
编程相关推荐