使用python写入特定列是.csv文件

时间:2017-10-06 23:12:00

标签: python-2.7 csv

我有一个.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附带的内置库)

1 个答案:

答案 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