簡體   English   中英

如何從具有多行的文本文件創建整數列表?

[英]how to create a list of integers from a text file with multiple lines?

我需要編寫一個程序來讀取文本文件並返回文件中數字的中位數。 我想我對如何解決這個問題有一個很好的想法,但是在運行我的程序時我得到了一個 AttributeError 。

我的問題是:如何為文本文件中的數字制作一個列表? 共有 15 個數字,在文件中分為 5 行:

10 20 30
40 50 60
90 80 70
11 22 13
14 14 20

我想創建一個列表是:

num_list = fv.readlines()
num_list = num_list.split()

我認為這會讀取文件的所有行,然后我可以使用拆分 function 來創建數字列表。 現在我得到了一個 AttributeError: 'list' object has no attribute 'split',我不確定該怎么做。

如果沒有可靠的預期結果,我假設您想要一個列表中的所有數字。

您可以創建一個空列表,然后在循環文件時使用list.extend 不過,您需要將它們轉換為 int 。 map非常適合:

num_list = []
with open('filename.txt') as fv:
    for row in fv:
        num_list.extend(map(int, row.split()))

你可以更有效地使用re

import re

with open('filename.txt') as fv:
    num_list = list(map(int, re.findall('\d+', fv.read())))

結果(以上兩者)將是:

[10, 20, 30, 40, 50, 60, 90, 80, 70, 11, 22, 13, 14, 14, 20]

否則在按行/行的子列表中:

with open('filename.txt') as fv:
    num_list = [list(map(int, row.split())) for row in fv]

結果:

[[10, 20, 30], [40, 50, 60], [90, 80, 70], [11, 22, 13], [14, 14, 20]]

我認為這就是你想要做的:

lines = fv.readlines()
num_list = []

for line in lines:
    num_list.extend(line.split(' '))

num_list = [int(num.strip()) for num in num_list]

我的答案絕對是更長的版本,但是...

text = open('numbers.txt', 'r')
string = text.read()
string = string.replace('\n', ' ')
numbers = string.split(' ')
text.close()

#Print to see the result
print(numbers)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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