问题的提出
给出一个像这样的文件my_file.dat
。
A | B | C | D | E | F
1 | 5 | 9 | 5 | 1 | hello
2 | 6 | 8 | 4 | 0 | finxters
3 | 7 | 7 | 3 | 1 | learn
4 | 8 | 6 | 2 | 2 | python
如何将这个文件转换为以下标准逗号分隔值格式的CSV文件。
A,B,C,D,E,F
1,5,9,5,1,hello
2,6,8,4,0,finxter
3,7,7,3,1,learn
4,8,6,2,2,python
方法1:Pandas读写CSV
你可以在Python中通过四个简单的步骤将一个.dat
文件转换为CSV文件。(1)安装Pandas 库,(2) 导入Pandas库,(3)将CSV文件作为DataFrame读取,(4) 将DataFrame写入文件中。
- (可在shell中选择)
pip install pandas
import pandas as pd
df = pd.read_csv('my_file.txt', sep='\s+|\s+')
df.to_csv('my_file.csv', index=None)
下面是一个最小的例子。
import pandas as pd
read_file = pd.read_csv('my_file.dat', sep='\s+\|\s+')
read_file.to_csv ('my_file.csv', index=None)
请注意,我们使用正则表达式 sep='\s+|\s+'
,在两个CSV值之间使用任何空白,后面是'|'
符号,后面是任何空白作为分隔符。如果你有一个不同的分隔符串,你可以在这里定义它。
方法2:CSV模块
你可以使用csv
模块来读取一个.dat
文件,并在5个步骤中把它写成一个.csv
文件。
- 安装并导入
csv
模块 - 以读取模式打开
.dat
文件,以写入模式打开.csv
文件。 - 创建一个
csv.writer()
对象。 - 遍历
.dat
文件中的行,并将其重新格式化为一个值的列表。 - 将行值列表写到CSV中,并对下一行重复操作,直到完成。
下面是一个具体的例子。
import csv
with open('my_file.dat', 'r') as dat_file:
with open('my_file.csv', 'w', newline='') as csv_file:
csv_writer = csv.writer(csv_file)
for row in dat_file:
row = [value.strip() for value in row.split('|')]
csv_writer.writerow(row)
得到的CSV文件看起来像这样。
你可以在这里了解更多关于代码中使用的一些功能。
方法3:Vanilla Python
在Python中不需要库就可以将.csv
转换为.dat
。只需使用标准的文件处理功能open()
和file.write()
,此外还有基本的 Python 技巧,将输入文件中的数据转换成逗号分隔的值。
with open('my_file.dat', 'r') as dat_file:
with open('my_file.csv', 'w', newline='') as csv_file:
for row in dat_file:
row = [value.strip() for value in row.split('|')]
csv_file.write(','.join(row) + '\n')
例如,在代码中我们用 [string.join()](https://blog.finxter.com/python-string-join/)
方法来创建一个完全兼容的CSV行。