科学计算中,输入数据文件格式转换是经常遇到的问题。由于数据输入人员输入方法不标准而产生的各种包括制表符(\t),空格混用等更是常见问题。这里介绍一个小实例,该例子读入一个文本文件(txt),这个文本文件中包含类似以下格式的数据:
date d1 d2, error ave name
2017/1/1 nan nan nan nan nan
2017/1/2nan nan nan nannan
2017/1/3 nan nan nan nan nan
这些数据之间是用空白字符分隔的,但空白字符包括了不空倍数的空格,有的还包含制表符,这给进一步的数据分析带来困难,现通过python的字符串函数,正则等应用将数据格式转换为标准的CSV格式。代码如下:
import re
f2 = open('Rn.csv', 'w') # 是你转换后要存储的地址
with open('data1.txt', 'r') as f1: # data1.txt是你想转换的文件
for i in f1:
line = re.split('\s+', i) #将字符串i以全部空白字符为分割符,将其分割成一个字符列表
new_line = ','.join(line) # 将字符列表用','拼接成一个新字符串
new_line = new_line.strip(',') # 将新字符串尾部产生的','去掉
print(new_line)
f2.write(new_line)
f2.close()
转换后的Rn.csv文件中数据格式如下:
date,d1,d2,error,ave,name
2017/1/1,nan,nan,nan,nan,nan
2017/1/2,nan,nan,nan,nan,nan
2017/1/3,nan,nan,nan,nan,nan
这里也不仅仅是可以.txt和.csv两种格式的转换了,其他格式都是可以的,其目的在于批量完成空格到逗号的转变。