Python 带引号的CSV嵌套列表读入

Python 带引号的CSV嵌套列表读入,python,csv,Python,Csv,我现在有, files = ['a.txt', 'b.txt', 'c.txt'] ftypes = [['a', 'b'], ['c'], ['a', 'b', 'c']] with open('files.csv', 'wb') as file: writer = csv.writer(file, quoting=csv.QUOTE_MINIMAL) for f, g in zip(files, ftypes): writer.writerow((f, g))

我现在有,

files = ['a.txt', 'b.txt', 'c.txt']
ftypes = [['a', 'b'], ['c'], ['a', 'b', 'c']]
with open('files.csv', 'wb') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_MINIMAL)
    for f, g in zip(files, ftypes):
        writer.writerow((f, g))
用我曾经用过的语言来阅读

with open('files.csv', 'r') as rfile:
    csvread = csv.reader(rfile)
    files = []
    ftypes = []
    for row in csvread:
        files.append(row[0])
        ftypes.append(row[1])
在实际的csv中,第二列正确地填充了填充第二列的子列表,但是在读取ftypes时,它返回的[“['a'”、“['c']”、“['a'”、“[b'”、[c']”是不正确的。它将其视为字符串列表,因此我不能像这样循环它们

for i in ftypes:
    for j in i:
       print(j)
如何修复我的写入/读取操作,以便正确解析嵌套列表

编辑:

CSV文件内容

a.txt,"['a', 'b']"
b.txt,"['c']"
c.txt,"['a', 'b', 'c']"
似乎Excel 2013正在解析双引号并忽略它们,但python正在正确解析实际的csv内容。我需要将哪些参数传递到csv.writer才能更正此问题?

我认为您应该使用

发生的事情非常明显——Python读取CSV行,行中的每个元素都是一个字符串。它不知道它应该是什么类型的

所以你会有类似的

import ast
with open('files.csv', 'r') as rfile:
    csvread = csv.reader(rfile)
    files = []
    g_list = []
    for row in csvread:
        files.append(row[0])
        ftypes.append(ast.literal_eval(row[1]))
要避免这种黑客行为并准确地进行修复,您可以执行以下操作:

files = ['a.txt', 'b.txt', 'c.txt']
ftypes = [['a', 'b'], ['c'], ['a', 'b', 'c']]

with open('files.csv', 'wb') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_MINIMAL)
    for f, g in zip(files, ftypes):
        g.insert(0, f)
        writer.writerow(g)


ftypes_from_file = []
files_from_file = []
with open('files.csv', 'r') as rfile:
    csvread = csv.reader(rfile)
    files = []
    g_list = []
    for row in csvread:
        files_from_file.append(row[0])
        ftype = []
        for item in row[1:]:
            ftype.append(item)
        ftypes_from_file.append(ftype)

print(ftypes_from_file)
主要技巧是处理行中项目的动态计数


我希望CSV中行的新格式对您合适。

请粘贴您的CSV文件内容示例显示您希望它显示在Excel中吗?
ftypes.append(ast.literal\u eval(row[1])
效果很好!谢谢然而,这并不能回答一个更广泛的问题,即首先要正确地写入值。