Python解析难题
我到处寻找这种情况的解决方案,并测试了几种不同的方法,但到目前为止我还没有任何运气。基本上,我有一个包含以下格式数据的文件,需要将其转换为CSV:Python解析难题,python,parsing,csv,Python,Parsing,Csv,我到处寻找这种情况的解决方案,并测试了几种不同的方法,但到目前为止我还没有任何运气。基本上,我有一个包含以下格式数据的文件,需要将其转换为CSV: (previously known as CyberWay Pte Ltd) 0 2019 01.com 0 1975 1 TRAVEL.COM 0 228 1&1 Internet 97 606 1&1 Internet AG 0 1347 1-800-HOSTING 0 8 1Velocity 0 28 1st Class Int
(previously known as CyberWay Pte Ltd)
0 2019
01.com
0 1975
1 TRAVEL.COM
0 228
1&1 Internet
97 606
1&1 Internet AG
0 1347
1-800-HOSTING
0 8
1Velocity
0 28
1st Class Internet Solutions
0 375
2iC Systems
0 192
我尝试过使用re.sub并用逗号替换每隔一行数字之间的空格,但到目前为止没有任何成功。我承认我通常从CSV解析,所以原始文本对我来说有点挑战。我需要维护每个数字集合上方的字符串格式
我希望CSV的格式如下:
foo bar
0,8
foo bar
0,9
foo bar
0,10
foo bar
0,11
大约有50000个条目,因此手动编辑这将花费大量时间
如果有人有任何建议,我将不胜感激
非常感谢。如果您只想用逗号替换空白,您可以执行以下操作:
line = ','.join(line.split())
您只需每隔一行执行此操作,但从您的问题来看,您似乎已经了解了如何处理每一行。如果我正确理解了您的要求,您需要在所有行上使用strip(),在偶数行上使用基于空格的拆分(从1开始的行): 输出为CSV(如果引号出现在输入中,则可能需要转义):
不过,我不理解您在示例的奇数行中作为标题放置的“foo,bar”。因此,您只是希望每隔一行的两个条目之间有一个逗号而不是空格?您描述的输出格式不是“真正的”CSV,因为这些行的元素数不同。使用CSV阅读器读取此文件可能会产生奇怪的结果或错误。
import re
fp = open("csv.txt", "r")
while True:
line = fp.readline()
if '' == line:
break
line = line.strip()
fields = re.split("\s+", fp.readline().strip())
print "\"%s\",%s,%s" % ( line, fields[0], fields[1] )
fp.close()
"Content of odd line",Number1,Number2