从.txt文件中提取数据

时间:2019-08-12 11:41:56

标签: python python-3.x

我的sample.txt文件中包含以下数据:

A2B3,32:45:63
A4N6,17:72:35
S2R3,13:14:99

我想要做的是将这些数据放入一个数组,但是用逗号分隔它们时遇到了问题。

我的代码如下:

with open('sample.txt', 'r') as f:
    for line in f:
        x = f.read().splitlines()
        print(x)

输出如下:

['A2B3,32:45:63','A4N6,17:72:35','S2R3,13:14:99']

我以不同的方式更改了代码,以逗号分隔这两个变量,但我似乎无法使其正常工作。有人可以帮我实现此输出吗?

['A2B3','32:45:63','A4N6','17:72:35','S2R3','13:14:99']

6 个答案:

答案 0 :(得分:1)

使用line.split(',')分隔“,”处的行。

x = []
with open('sample.txt', 'r') as f:
    for line in f:
        for j in line.split(','):
            x.append(j.split('\n')[0])
    print(x)

答案 1 :(得分:0)

您可能可以做:

data = list()
with open('sample.txt', 'r') as f:
for line in f.readlines():
    data.append(line)

您应该以附加行列表结尾。在大文件上,它也比.splitlines()更快,因为.readlines()是用C实现的,不会将整个文件加载到内存中。

答案 2 :(得分:0)

使用此代码,它会将行像您一样分成一个列表,然后在逗号处将这些项目分开。

filename = "sample.txt"

with open(filename) as file:
    lines = file.read().split("\n")

output = []
for l in lines:
    for j in l.split(","):
        output.append(j)

print(output)

输出:

['A2B3', '32:45:63', 'A4N6', '17:72:35', 'S2R3', '13:14:99']

答案 3 :(得分:0)

是的,这很简单...

将所有行分开后,您将看到列表

['A2B3,32:45:63','A4N6,17:72:35','S2R3,13:14:99']

然后再次用逗号(,)分隔每个元素,并将其添加到新列表中,例如

list_a = ['A2B3,32:45:63','A4N6,17:72:35','S2R3,13:14:99']
final_list = []

for i in list_a:
    part_1, part_2 = i.split(',')
    final_list.append(part_1)
    final_list.append(part_2)

print(final_list)

它将为您提供所需的输出,

['A2B3','32:45:63','A4N6','17:72:35','S2R3','13:14:99']

这不是多余的方法,但是对您来说很容易理解

谢谢:)

答案 4 :(得分:0)

您在这里,只需要重复遍历一次:

res = []
with open('sample.txt', 'r') as f:
    for line in f:
        res += line.strip().split(",")
print(res)

礼物:

['A2B3', '32:45:63', 'A4N6', '17:72:35', 'S2R3', '13:14:99']

尽管我想知道为什么要在列表中包含所有内容,但我认为您缺少项目之间的链接,也许将它们保留在这样的元组中可能更有用:

res = []
with open('sample.txt', 'r') as f:
    for line in f:
        res.append(tuple(line.strip().split(",")))
print(res)

礼物:

[('A2B3', '32:45:63'), ('A4N6', '17:72:35'), ('S2R3', '13:14:99')]

答案 5 :(得分:0)

FMPOV这个结果更好。但没关系,我想,您会从这里提出的解决方案之一中找到解决方案。

x = [i.replace("\n","").split(',')for i in open('data.txt', 'r')]
print(x)
print(x[0][1])