迭代文本文件中的数字

Posted

技术标签:

【中文标题】迭代文本文件中的数字【英文标题】:Iterating over numbers in a text file 【发布时间】:2021-12-13 19:50:57 【问题描述】:

我有一个包含 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

【问题讨论】:

int() 在每一行 显示一个示例文件的内容——也许只是前几行就足够了。 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 - >这是数据的模样在txt文件跨度> @gavmross 实际上,再三考虑,我认为只是我忽略了通读整个问题。我同意在这种情况下可能不需要显示示例文件内容。 【参考方案1】:

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]

【讨论】:

嗯,有趣.. list(map(...[*map(... 之间有什么区别吗?想知道使用其中一个是否更好。 我只是觉得它读起来更容易,但不应该真正影响这么小的列表的性能。【参考方案2】:

这是使用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]

【讨论】:

以上是关于迭代文本文件中的数字的主要内容,如果未能解决你的问题,请参考以下文章

vbscript Word宏迭代表中的每个单元格并将数据提取到文本文件。

在scala中读取文本文件,一行接一行,不迭代

如何按降序对文本文件中的不同类型数字排序到文本框?

在 C++ 中读取文本文件中的数字和字母

如何更改 C# 文本文件中的未知数字?

python Coursera - 打开文本文件并使用正则表达式计算嵌入在文本中的数字。