簡體   English   中英

讀取txt文件並放入python列表

[英]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.appendlist.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM