簡體   English   中英

迭代文本文件中的數字

[英]Iterating over numbers in a text file

我有一個包含 1,000 個數字的 .txt 文件,這些數字僅由','分隔。 當我將文件打開到 python 時,它會將它讀取為一個大字符串,因此只有一行。 我需要想辦法將逗號之間的每個數字轉換為int以便我可以迭代它們。 這是我到目前為止的代碼:

with open('HW5.txt') as f:
    data = f.read()
    print(type(data))
    newdata = data.replace(',',' ')
    data_seperate = newdata.replace(' ', '\n')
    print(data_seperate)
    print(len(data_seperate))
f.close()

它在新行上打印出每個數字,但這些數字仍然是字符串,python 將每個單獨的數字視為一個字符,而不是將每個數字設為單個整數。 我該如何處理? 我剛開始使用 .txt 文件,因此屬性讓我感到困惑。 嘗試轉換print(int(data_seperate))返回此錯誤:

ValueError: invalid literal for int() with base 10: '798\n441\n687\n780\n103\n405\n363\n66\n481\n171\n549\n449\n135\n229\n689\n248\n374\n697\n502\n209\n699\n684\n377\n235\n819\n471\n189\n43\n696\n999\n769\n501\n148\n474\n733\n729\n427\n710\n911\n207\n2

map

with open("HW5.txt") as f:
    data = [*map(int, f.read().split(","))]

>>> data
[798, 441, 687, 780, 103, 405, 363, 66, 481, 171, 549, 449, 135, 229,
 689, 248, 374, 697, 502, 209, 699, 684, 377, 235, 819, 471, 189, 43,
 696, 999, 769, 501, 148, 474, 733, 729, 427, 710, 911, 207, 25, 785,
 855, 550, 481, 735, 832, 791, 970, 225, 559, 182, 922, 717, 723, 113,
 260, 166, 294, 97, 3, 323, 835, 18, 653, 876, 264]

這是使用str.splitmap的一種方法。 請注意,我在這里使用rstrip()以防文件中有一個尾隨換行符,正如我們在這里所做的那樣。

sample_file_contents = """\
1,2,3,4,5,6,7,8,9
"""

num_list = sample_file_contents.rstrip().split(',')
numbers = list(map(int, num_list))

print(numbers)

輸出:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

暫無
暫無

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

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