将制表符分隔值(TSV)文件转换为逗号分隔值(CSV)文件的最简单方法是使用以下三行代码。
import pandas as pd
df = pd.read_csv('my_file.txt', sep='\t', header=None)
df.to_csv('my_file.csv', header=None)
我们接下来会详细解释这个方法和其他方法--请滚动到方法3,了解这个确切的方法。
问题的提出
给出一个以制表符分隔的文件,在某一列的两个值之间有一个制表符'\t'
。
输入。 'my_file.tsv'
图。文件'my_file.tsv'
,有制表符'\t'
分隔的数值。
Alice DataScience $100000
Bob Programmer $90000
Carl Manager $122000
Dave Freelancer $144000
如何将以制表符分隔的数值(TSV)转换成逗号分隔的数值(CSV)文件?
输出 'my_file.csv'
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
我们还将看看这个问题的轻微变化。开始吧!
方法1:字符串替换单个制表符
在Python中,将一个以制表符分隔的(TSV)文件转换为以逗号分隔的(CSV)文件的最直接的方法是用逗号','
,将每个制表符'\t'
。 [string.replace()](https://blog.finxter.com/python-string-replace-2/)
方法将每个表格字符替换成一个逗号。如果两个值正好由一个表格字符分开,这就可以了。
这里有一个输入文件的例子'my_file.tsv'
。
这里有一个例子,是将Tab分隔的文件转换为CSV文件的一些代码。
with open('my_file.tsv') as f:
# Read space-delimited file and replace all empty spaces by commas
data = f.read().replace('\t', ',')
# Write the CSV data in the output file
print(data, file=open('my_file.csv', 'w'))
输出文件'my_file.csv'
。
方法2:Regex替换任意的制表符
要用逗号','
,在两列值之间替换一个'\t'
或多个制表符'\t\t\t'
,并获得CSV,请在空格分隔的data
,使用正则表达式操作re.sub('[\t]+', ',', data)
。
下面是一个输入文件的例子'my_file.tsv'
,注意可能分隔两列数值的额外的表格字符。
这里有一个例子,是将TSV转换成CSV文件的一些代码。
import re
with open('my_file.txt') as infile:
# Read space-delimited file and replace all empty spaces by commas
data = re.sub('[ ]+', ',', infile.read())
# Write the CSV data in the output file
print(data, file=open('my_file.csv', 'w'))
输出文件'my_file.csv'
。
方法3:Pandas read_csv() 和 to_csv()
要将一个以制表符分隔的文件转换为CSV文件,首先使用pd.read_csv(filename, sep='\t+', header=None)
将文件读入Pandas DataFrame,然后使用df.to_csv(outfilename, header=None)
将DataFrame写入文件。
这里有一个输入文件的例子'my_file.tsv'
。
下面是一些代码的例子,将tab分隔的文件转换为CSV文件。
import pandas as pd
# Read space-delimited file
df = pd.read_csv('my_file.tsv', sep='\t+', header=None)
# Write DataFrame to file
df.to_csv('my_file.csv', header=None)
输出文件'my_file.csv'
。
如果你确定两列数值之间只有一个表格式的字符,你也可以使用更简单的sep='\t'
。