删除csv文件在python中打开时添加到行中的方括号和引号?
我正在尝试编写一个脚本,它将打开一个csv文件,查找该csv中索引5处的每一行,该行与名为“matches”的列表中的值相匹配,并将该行附加到一个以索引5处的值命名的csv。到目前为止,我有:删除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')
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是的,当然是愚蠢的。谢谢