如何将txt文件作为列表列表读取并在Python中轻松访问?

时间:2015-07-13 16:53:54

标签: python list text io

我有一个txt文件,如下所示:

1 13
#abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$####
1 19
ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$
6 19
0/# a #a#akon##uli ##mb## ##l#kok jatszo#####del ####l$$$#$$$$$#$#$#$#$$###$##$$##$$$$#$$$
5 17
a pat#k#a###ar##sok #em#j#l#nt##ztek nyomok volt#k$$$$#$$$#$$$#$#$##$$$$###$####$$#$$$$#$#

但是仍有几十行。

我想阅读此txt文件并将其存储在列表列表中,以便我可以轻松访问每个字符,例如list_name[x][y],检查它是否为#等。

最好的方法是什么?

4 个答案:

答案 0 :(得分:2)

要确保文件在阅读后关闭,请使用with open()。此方法为您提供了可以根据您的请求访问的字符列表。您可以 使用方法:

with open('file.txt', 'r') as f_in:
    my_list = [line for line in f_in]

# do something with my_list

['1 13\n', '#abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$####\n', '1 19\n', 'ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$\n', ...]

调用my_list[1][0]然后返回# - 第二行中的第一个字符。

这会在每行末尾留下行尾字符,您可以使用my_list = [line.strip() for line in f_in]

删除

答案 1 :(得分:1)

尝试:

list_name = [list(line) for line in open('myfile.txt')]

然后list_name[n]将是n行中的字符列表。

但是,请注意,正如其他回答者所指出的,字符串共享列表语法用于获取值(对于字符串s,您可以使用s[n]来获取n元素)。对于列表和字符串,切片略有不同:对于字符串s = 'abcd's[1:3]'bc',但对于s = ['a', 'b', 'c', 'd']s[1:3]['b', 'c']。因此,其他答案可能更适合您的目的,具体取决于您希望实现的目标。

答案 2 :(得分:0)

乍一看,我会使用列表理解来做到这一点:

public T1, public T2, ... , public Tn

您也可以很容易地将其放入函数中以获取文件名并返回矩阵。

答案 3 :(得分:0)

您不必将字符串强制转换为列表,以便能够将字符作为line[index]来处理。 您唯一需要的是读取文件并运行检查功能。

def check_the_line(line):
    assert line[5] == "#"

with open('file.txt', 'r') as f_in:
   for line in f_in:
      check_the_line(line)