How do I convert a .tsv to .csv?
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)
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()
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