Python 如何将文本行转换为列?

Python 如何将文本行转换为列?,python,Python,这可能是非常简单的事情,但我是Python的新手,非常抱歉。cas是我有很多文件包含这种类型的文本: name1 [1.0 2.0 3.0],[1.1 2.1 3.1] (目录/data/text1/1.txt) 例如,另一个文件包含 name2 [4.0 5.0 6.0],[4.1 5.1 6.1] (目录/data/text2/2.txt) 输出应为: name1 1.0 1.1 2.0 2.1 3.0 3.1 name2 4.0 4.1 5.0 5.1 6.0 6.1 最好的方法是什

这可能是非常简单的事情,但我是Python的新手,非常抱歉。cas是我有很多文件包含这种类型的文本:

name1
[1.0 2.0 3.0],[1.1 2.1 3.1]
(目录/data/text1/1.txt)

例如,另一个文件包含

name2
[4.0 5.0 6.0],[4.1 5.1 6.1]
(目录/data/text2/2.txt)

输出应为:

name1
1.0 1.1
2.0 2.1
3.0 3.1
name2
4.0 4.1
5.0 5.1
6.0 6.1
最好的方法是什么

我试着写代码:

with open('1.txt','r+') as f:
    for line in f:
        a = line.split(',', 1)
        new_line = line[0] + '\n' + line[1]
        f.write(new_line)
>>> import re, os
>>> for file in os.listdir("directory"):
>>>     with open(file) as fp:
>>>         for line in fp.readlines():
>>>            lists = [re.findall("\d+\.\d+",l) for l in line.split(',')]
>>>            for a,b in zip(lists[0],lists[1]):
>>>                 print a, b
(这可能真的很愚蠢。)

例:(只有两行)


您可以
zip
re
来解决您的问题。 代码如下:

with open('1.txt','r+') as f:
    for line in f:
        a = line.split(',', 1)
        new_line = line[0] + '\n' + line[1]
        f.write(new_line)
>>> import re, os
>>> for file in os.listdir("directory"):
>>>     with open(file) as fp:
>>>         for line in fp.readlines():
>>>            lists = [re.findall("\d+\.\d+",l) for l in line.split(',')]
>>>            for a,b in zip(lists[0],lists[1]):
>>>                 print a, b
对于包含内容的文件:

[1.0 2.0 3.0],[1.1 2.1 3.1] 
输出:

1.0 1.1
2.0 2.1
3.0 3.1

希望这是您的期望。

您好,欢迎来到SO。虽然我们很乐意为您的代码中的特定问题提供帮助,但这不是一项雇佣开发者服务,因此通常您应该展示您迄今为止所做的尝试。您想将生成的结构保存在文件中还是仅用python处理?实际上,
[1.0 2.0 3.0],[1.1 2.1 3.1]
这不是一个合适的列表。你到底想要什么?#1因为我使用python大约1周了,我的试用可能真的很愚蠢,但其中之一是:用open('1.txt','r+')作为f:for line in f:a=line.split(',',,1)new#line=line[0]+'\n'+line[1]f.write(new#line)#2我想把它保存为文本#哦,是的,我很抱歉——我应该把它称为一个文本,而不是一个列表。因此,我想编辑此文本文件,使其与原始问题中的列分开。请回答您的问题,并将您刚才在评论中发布的代码添加到其中。谢谢,这就是我想要的,但问题是,我有大约200个这样的文本文件,所以我想这样做,不需要在每个脚本中都放上所有的数字。你可以在一个目录中的所有文件上迭代,直接处理文件的内容,即行。我得到一个错误,对于zip中的a,b(列表[0],列表[1]):列表索引超出范围。在第三行,我应该输入文件名,而不是(file)或否?@BrigitaP:每个文件的第一行都有一个名称,对吗?@BrigitaP:每个文件只有两行,第一行是name,第二行是list?