Python解析难题

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

我到处寻找这种情况的解决方案,并测试了几种不同的方法,但到目前为止我还没有任何运气。基本上,我有一个包含以下格式数据的文件,需要将其转换为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 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