我的文件只包含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')
答案 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