How do I convert a .tsv to .csv?

廉价感情. 提交于 2019-11-30 05:07:42

问题


Trying to convert a .tsv to a .csv. This:

import csv

# read tab-delimited file
with open('DataS1_interactome.tsv','rb') as fin:
    cr = csv.reader(fin, delimiter='\t')
    filecontents = [line for line in cr]

# write comma-delimited file (comma is the default delimiter)
with open('interactome.csv','wb') as fou:
    cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE)
    cw.writerows(filecontents)

Gives me this error:

  File "tsv2csv.py", line 11, in <module>
    cw.writerows(filecontents)
_csv.Error: need to escape, but no escapechar set

回答1:


While attempting to write to the CSV file, it encounters a token where it has to insert an escape character. However, you have not defined one.

Dialect.escapechar

A one-character string used by the writer to escape the delimiter if quoting is set to QUOTE_NONE and the quotechar if doublequote is False. On reading, the escapechar removes any special meaning from the following character. It defaults to None, which disables escaping.

Source: https://docs.python.org/2/library/csv.html#csv.Dialect.escapechar

Example code:

# write comma-delimited file (comma is the default delimiter)
with open('interactome.csv','wb') as fou:
    cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE, escapechar='\\')
    cw.writerows(filecontents)



回答2:


import pandas as pd 
tsv_file='name.tsv'
csv_table=pd.read_table(tsv_file,sep='\t')
csv_table.to_csv('new_name.csv',index=False)

We can use the above code to convert the .tsv file to .csv file




回答3:


TSV is a file type where fields are separated by tab. If you want to convert a TSV into a CSV (comma separated value) you just need to do a find and replace from TAB to COMMA.

Update:
As pointed out by don-roby, "There might be commas in the tsv", for that we use a regex to escape all the csv special characters as defines by rfc4180.

i.e.:

import re
tsv = open('tsv.tsv', 'r')
fileContent =  tsv.read()
appDesc = re.sub("""(?ism)(,|"|')""", r"\\\1", appDesc) # escape all especial charaters (" ' ,) rfc4180
fileContent = re.sub("\t", ",", fileContent) # convert from tab to comma
csv_file = open("csv.csv", "w")
csv_file.write(fileContent)
csv_file.close()



回答4:


import sys
import csv

tabin = csv.reader(open('sample.txt'), dialect=csv.excel_tab)
commaout = csv.writer(open('sample.csv', 'wb'), dialect=csv.excel)

for row in tabin:
  commaout.writerow(row)


来源:https://stackoverflow.com/questions/29759305/how-do-i-convert-a-tsv-to-csv

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!