我正在使用tkinter
打开一个对话框,用户可以在其中选择文件。我想从第11行开始解析该文件。该文件如下所示:
(115,147)
(6,145)
(44,112)
(17,72)
(112,1)
(60,142)
(47,158)
(35,43)
(34,20)
(38,33)
11101111110111011111111110111111111111111111111011111111111111110111111111
111101111101111a11011122112011222222211112111221221111101111111111110111ab
..more down here
如果没有空格分隔,我如何检索每个字符?我知道我必须这样开始:
# Bring up save dialog box
file_path = filedialog.askopenfilename(filetypes=[("Text files","*.txt")])
# Check if user clicked cancel
if file is None or file is '':
return False
# Read from file
with open(file, 'r') as f:
# Do something here with f.read()
我希望将这些数字放在一个列表中(每个都在它们自己的索引处):
11101111110111011111111110111111111111111111111011111111111111110111111111
111101111101111a11011122112011222222211112111221221111101111111111110111ab
任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
首先,您需要从文件中read()
数据,然后按换行拆分以获取文件中的行列表:
lines=f.read().split("\n")
如果您只需要从第11行到结尾,您可以使用:
lines=lines[10:]
然后迭代它,使用list()
分割成字符:
characters=[list(line)for line in lines]
输出:
[['1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', 'a', '1', '1', '0', '1', '1', '1', '2', '2', '1', '1', '2', '0', '1', '1', '2', '2', '2', '2', '2', '2', '2', '1', '1', '1', '1', '2', '1', '1', '1', '2', '2', '1', '2', '2', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', 'a', 'b']]
答案 1 :(得分:1)
# consume 10 lines
for _ in range(10):
f.readline()
# read one character at a time
# f.read(1) will return '' when you reach eof
c = f.read(1)
while c:
# do something with c
c = f.read(1)
就此而言,因为python中的列表和字符串是相同的,所以你可以说
# consume 10 lines
for _ in range(10):
f.readline()
rest = f.read()
然后休息将是一个包含所有内容的列表/字符串...即,rest[0]
是第一个字符,rest[1]
是下一个,等等。请注意,您也将捕获换行符方式。