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

时间:2016-04-09 20:27:50

标签: python

我的文件只包含0&1和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,0,1,1,1]中转换0101110一样。 (没有' \ n')

5 个答案:

答案 0 :(得分:2)

您只需要进行两项更改。首先,当你制作values时,你需要一次取整行的每个字符,而不是整行: values = [int(x) for x in line.strip() if x]

现在,如果您自己运行此代码,您将获得[[1, 0, ...], [1, 1, ...]]。问题在于,如果以另一个列表作为参数调用list.append,则只需将列表添加为元素即可。您正在寻找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

答案 1 :(得分:0)

这是你可以做到的一种方式。您也不需要使用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 :(得分:0)

使用 strip()删除 \ n 过滤器,使用 bool 删除空字符串:

with open('test.txt') as f:
    lines = map(lambda x: x.strip(), filter(bool, f))
    print [int(value) for number in lines for value in number]

答案 3 :(得分:0)

一种可能性:

intlist = []

with open('arq.txt', 'r') as handle:
    for line in handle:
        for ch in line.strip():
            intlist.append (ch)

print intlist

答案 4 :(得分:0)

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

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

print intlist