[英]Read txt file and put in list with 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,0,1,1,1]中轉換0101110一樣。 (不帶“ \\ n”)
您只需要進行兩項更改。 第一個是,當您創建values
,需要獲取行的每個字符,而不是一次獲取整個行: values = [int(x) for x in line.strip() if x]
現在,如果您單獨運行此代碼,則會得到[[1, 0, ...], [1, 1, ...]]
。 問題是,如果您調用list.append
並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
這是您可以做到的一種方法。 您也不需要使用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)
使用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]
一種可能性:
intlist = []
with open('arq.txt', 'r') as handle:
for line in handle:
for ch in line.strip():
intlist.append (ch)
print intlist
如果只有數字和換行符,則只需閱讀文件,刪除換行符,將結果字符串映射為整數,然后將其轉換為list
:
with open('arq.txt') as handle:
intlist = list(map(int, handle.read().replace('\n', '')))
print intlist
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.