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