如何在Python中把.dat转换为.csv文件?

862 阅读2分钟

问题的提出

给出一个像这样的文件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写入文件中。

  1. (可在shell中选择)pip install pandas
  2. import pandas as pd
  3. df = pd.read_csv('my_file.txt', sep='\s+|\s+')
  4. 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 文件。

  1. 安装并导入csv 模块
  2. 以读取模式打开.dat 文件,以写入模式打开.csv 文件。
  3. 创建一个csv.writer() 对象。
  4. 遍历.dat 文件中的行,并将其重新格式化为一个值的列表
  5. 将行值列表写到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行。