我有一个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]
,检查它是否为#
等。
最好的方法是什么?
答案 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)