Python 如何将文本行转换为列?
这可能是非常简单的事情,但我是Python的新手,非常抱歉。cas是我有很多文件包含这种类型的文本: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 最好的方法是什
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?