删除csv文件在python中打开时添加到行中的方括号和引号?

删除csv文件在python中打开时添加到行中的方括号和引号?,python,csv,export-to-csv,Python,Csv,Export To Csv,我正在尝试编写一个脚本,它将打开一个csv文件,查找该csv中索引5处的每一行,该行与名为“matches”的列表中的值相匹配,并将该行附加到一个以索引5处的值命名的csv。到目前为止,我有: import csv def write_to_file(x, y): f = open(y + ".csv", 'a',) f.write(x + '\n') f.close() with open('/Users/bj5/Desktop/test1.csv', 'rb')

我正在尝试编写一个脚本,它将打开一个csv文件,查找该csv中索引5处的每一行,该行与名为“matches”的列表中的值相匹配,并将该行附加到一个以索引5处的值命名的csv。到目前为止,我有:

import csv

def write_to_file(x, y):
    f = open(y + ".csv", 'a',) 
    f.write(x + '\n')
    f.close()

with open('/Users/bj5/Desktop/test1.csv', 'rb') as a:
    reader = csv.reader(a)
    for row in reader:
        name = row[5]
        if name in matches:
            row = str(row)
            write_to_file(row, name)
这是哪种工作,问题是每一行都封装在方括号内,每一个单元格都封装在语音标记内:

['metadata_cleaned_29042013', '23541540', 'ERS075571', '', '36809', 'Mycobacterium_abscessus', '', '2010', '3', '', '', 'UK', 'Papworth Everard', '', '', '5.0M']
['metadata_cleaned_29042013', '23541540', 'ERS075570', '', '36809', 'Mycobacterium_abscessus', '', '2009', '7', '', '', 'UK', 'Papworth Everard', '', '', '5.1M']
['metadata_cleaned_29042013', '23541540', 'ERS075569', '', '36809', 'Mycobacterium_abscessus', '', '2010', '3', '', '', 'UK', 'Papworth Everard', '', '', '5.0M']
我想去掉这个,这样每个输出文件都会如下所示:

metadata_cleaned_29042013   23541540    ERS075571       36809   Mycobacterium_abscessus     2010    3           UK  Papworth Everard            5.0M
metadata_cleaned_29042013   23541540    ERS075570       36809   Mycobacterium_abscessus     2009    7           UK  Papworth Everard            5.1M
metadata_cleaned_29042013   23541540    ERS075569       36809   Mycobacterium_abscessus     2010    3           UK  Papworth Everard            5.0M
我认为这可能会奏效,但没有改变任何事情:

 with open('/Users/bj5/Desktop/test1.csv', 'rb') as a:
        reader = csv.reader(a)
        for row in reader:
            name = row[5]
            if name in matches:
                row = str(row)
                row.replace("[",'')
                row.replace("]",'')
                row.replace("''",'')
                write_to_file(row, name)
有谁能告诉我为什么这样做不起作用,以及我能做些什么来去掉方括号和引号吗?

这到底是怎么回事

with open('/path/to/source.csv', 'rb') as source, open('/path/to/dest.csv','wb') as dest:
    reader = csv.reader(source)
    writer = csv.writer(dest)
    for row in reader:
       if row[5] in matches:
           writer.writerow(row)
事实上,这是怎么回事

with open('/path/to/source.csv', 'rb') as source, open('/path/to/dest.csv','wb') as dest:
    reader = csv.reader(source)
    writer = csv.writer(dest)
    for row in reader:
       if row[5] in matches:
           writer.writerow(row)

你想错了。您可以使用
csv.reader
读取csv文件并将其转换为Python数据结构。因此,您应该使用
csv.writer
将其从Python数据结构转换回csv,而不是将原始数据写入文件

您也不应该每次都重新打开文件;没必要那样

with open('/Users/bj5/Desktop/test1.csv', 'rb') as a:
  with open(name, 'w') as dest:
    reader = csv.reader(a)
    writer = csv.writer(dest)
    for row in reader:
        name = row[5]
        if name in matches:
            writer.writerow(row)

你想错了。您可以使用
csv.reader
读取csv文件并将其转换为Python数据结构。因此,您应该使用
csv.writer
将其从Python数据结构转换回csv,而不是将原始数据写入文件

您也不应该每次都重新打开文件;没必要那样

with open('/Users/bj5/Desktop/test1.csv', 'rb') as a:
  with open(name, 'w') as dest:
    reader = csv.reader(a)
    writer = csv.writer(dest)
    for row in reader:
        name = row[5]
        if name in matches:
            writer.writerow(row)

row=row.replace(“]”,”)
Ah是的,当然是愚蠢的。谢谢
row=row.replace(“]”,”)
Ah是的,当然是愚蠢的。谢谢