我有一个.csv文件,我需要用列表中的新值覆盖某个列。
假设我有列表L1 = ['La','Lb','Lc'],我想在第5列中写。 .csv文件中的5个。
如果我跑:
L1 = ['La', 'Lb', 'Lc']
import csv
with open(r'C:\LIST.csv','wb') as f:
w = csv.writer(f)
for i in L1:
w.writerow(i)
这会将L1值写入第一列和第二列。
第一列将是'L','L','L'和第二列'a','b','c'
我找不到从列表中的每个元素写入特定列的语法。 (这是在Python 2.7中)。谢谢你的帮助!
(对于这个脚本,我必须使用IronPython,以及IronPython附带的内置库)
答案 0 :(得分:0)
虽然您当然可以使用Python的内置csv
模块来读取数据,修改数据并将其写出来,但我建议使用优秀的tablib
模块:
from tablib import Dataset
csv = '''Col1,Col2,Col3,Col4,Col5,Col6,Col7
a1,b1,c1,d1,e1,f1,g1
a2,b2,c2,d2,e2,f2,g2
a3,b3,c3,d3,e3,f3,g3
'''
# Read a hard-coded string just for test purposes.
# In your code, you would use open('...', 'rt').read() to read from a file.
imported_data = Dataset().load(csv, format='csv')
L1 = ['La', 'Lb', 'Lc']
for i in range(len(L1)):
# Each row is a tuple, and tuples don't support assignment.
# Convert to a list first so we can modify it.
row = list(imported_data[i])
# Put our value in the 5th column (index 4).
row[4] = L1[i]
# Store the row back into the Dataset.
imported_data[i] = row
# Export to CSV. (Of course, you could write this to a file instead.)
print imported_data.export('csv')
# Output:
# Col1,Col2,Col3,Col4,Col5,Col6,Col7
# a1,b1,c1,d1,La,f1,g1
# a2,b2,c2,d2,Lb,f2,g2
# a3,b3,c3,d3,Lc,f3,g3