Python解析字符串

时间:2014-04-08 20:54:51

标签: python parsing

我有一个test.txt文件:

1.2.3.4 ['22', '9292', '9293']
1.2.3.5 ['232', '992']

我需要在

中对其进行转换
1.2.3.4,22
1.2.3.4,9292
1.2.3.4,9293
1.2.3.5,232
1.2.3.5,922

最狡猾的方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以拆分此正则表达式的每一行:(?:\[|\]|, ),将拆分的元素存储为变量。然后迭代元素2-and-up,并为每个元素打印[element 1][comma][the next element]

答案 1 :(得分:1)

from ast import literal_eval
with open('filein.txt') as fIn, open('fileout.txt', 'w+') as fOut:
    for line in fIn:
        first, second = line.split(None, 1)
        for item in literal_eval(second):
            fOut.write('{},{}\n'.format(first, item))

假设每行的列表部分是实际有效的Python列表,我们可以使用ast.literal_eval来安全地解析它。所以我们只需迭代每一行,从列表部分拆分第一部分,解析列表部分。然后对于列表中的每个元素,我们在目标文件中写一行。