本文介绍了如何使用python将.dat转换为.csv?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个file.dat,看起来像:
id | user_id | venue_id | latitude | longitude | created_at
---------+---------+----------+-----------+-----------+-----------------
984301 |2041916 |5222 | | |2012-04-21 17:39:01
984222 |15824 |5222 |38.8951118 |-77.0363658|2012-04-21 17:43:47
984315 |1764391 |5222 | | |2012-04-21 17:37:18
984234 |44652 |5222 |33.800745 |-84.41052 | 2012-04-21 17:43:43
我需要获取带有已删除的空纬度和经度行的csv文件,例如:
id,user_id,venue_id,latitude,longitude,created_at
984222,15824,5222,38.8951118,-77.0363658,2012-04-21T17:43:47
984234,44652,5222,33.800745,-84.41052,2012-04-21T17:43:43
984291,105054,5222,45.5234515,-122.6762071,2012-04-21T17:39:22
我尝试使用下一个代码做到这一点:
with open('file.dat', 'r') as input_file:
lines = input_file.readlines()
newLines = []
for line in lines:
newLine = line.strip('|').split()
newLines.append(newLine)
with open('file.csv', 'w') as output_file:
file_writer = csv.writer(output_file)
file_writer.writerows(newLines)
但同样,我得到带有"|"的csv文件符号和空的纬度/经度行.错误在哪里?通常,我需要在DateFrame中使用生成的csv文件,所以也许有某种方法可以减少操作数.
But all the same I get a csv file with "|" symbols and empty latitude/longtitude rows.Where is mistake?In general I need to use resulting csv-file in DateFrame, so maybe there is some way to reduce number of actions.
推荐答案
str.strip()
从字符串中删除开头和结尾字符.
您想分割"|"
上的行,然后去除结果列表中的每个元素:
str.strip()
removes leading and trailing characters from a string.
You want to split the lines on "|"
, then strip each element of the resulting list:
import csv
with open('file.dat') as dat_file, open('file.csv', 'w') as csv_file:
csv_writer = csv.writer(csv_file)
for line in dat_file:
row = [field.strip() for field in line.split('|')]
if len(row) == 6 and row[3] and row[4]:
csv_writer.writerow(row)
这篇关于如何使用python将.dat转换为.csv?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!