用python读取txt文件并放入列表

2021-10-17 14:52:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个只有0和1的文本文件。它们之间没有空格。示例:

0101110号

1110111年

我想一次读取一个字符,并将它们作为整数列表中的单个元素。你知道吗

我的代码:

intlist = []

with open('arq.txt', 'r') as handle:
for line in handle:
    if not line.strip():
        continue

    values = map(int, line.split())
    intlist.append(values)

print intlist
handle.close()

我的结果:

[[101110],[1110111]]

就像我在intlist=[0,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1]中转换0101110一样。(不带'\n')

3条回答
网友
1楼 ·

有一种方法你可以做到。您也不需要使用handle.close()上下文管理器为您处理关闭文件的操作。你知道吗

intlist = []

with open('arq.txt', 'r') as handle:
    for line in handle:
        if not line.strip():
            continue
        intlist[:] += [int(char) for i in line.split() for char in i]

print(intlist)
网友
2楼 ·

你只需要两个改变。第一种情况是,当您制作values时,需要获取行中的每个字符,而不是一次获取整行: values = [int(x) for x in line.strip() if x]

现在,如果您自己运行这段代码,您将得到[[1, 0, ...], [1, 1, ...]]。问题是,如果用另一个list作为参数调用list.append,则只需添加list作为元素。您正在寻找list.extend方法:

intlist.extend(values)

您的最终代码是:

intlist = []

with open('arq.txt', 'r') as handle:
    for line in handle:
        if not line.strip():
            continue

        values = [int(x) for x in line.strip() if x]
        intlist.extend(values)

    print intlist
网友
3楼 ·

如果只有数字和换行符,则只需读取文件,删除换行符,将结果字符串映射为整数,然后将其转换为list

with open('arq.txt') as handle:
    intlist = list(map(int, handle.read().replace('\n', '')))

print intlist

相关问题