【问题标题】:Convert txt file to int array将txt文件转换为int数组
【发布时间】:2017-04-14 02:39:22
【问题描述】:

我有一个类似于以下内容的文本文件:

-45 64 -41 -51
  95 96 -74     -74 56 41
41 64    -62 75

我正在尝试将其转换为 int 数组。

到目前为止,我尝试将其设为一个大字符串,然后将其转换为这样,但是当我尝试摆脱空格时,输出看起来仍然与 txt 文件完全一样。

file = open("dir", "r")
line = file.read()
line.strip()
line.replace(" ","")
print line
line.close()

我做错了什么?我可以直接从文件中读取它到一个 int 数组中吗?

【问题讨论】:

  • 你希望你的输出数组是什么样子的?
  • 你真的想split()字符串吗?
  • 你在使用 numpy 吗?如果不是,您的意思是list 而不是array

标签: python arrays io int python-2.x


【解决方案1】:

您快到了 - 您需要使用 str.split 而不是 str.stripstr.replace。然后map 将结果转为整数。您还可以使用上下文管理器自动关闭文件(顺便说一下,不是line)。

with open('dir') as f:
    content = file.read()
array = content.split()
numbers = map(int, array)
print array

【讨论】:

  • 在 python 3 中,map 生成一个生成器,而不是一个列表
  • @taylorswift 我们在这里使用 Python 3 吗?注意print 语句。
  • 重要的是要确保人们意识到差异,在较新的python中,像map这样的函数实际上不会在内存中产生一个“数组”项
  • @taylorswift - 但是 Python 3 与这个问题的任何部分都无关。这无关紧要。
  • @taylorswift - 这是一个单独的问题,不需要在这里讨论。感谢您的意见。
【解决方案2】:

使用列表推导,答案是:

with open('dir', 'r') as f:
    data = f.read()

res = [int(i) for i in data.split()]

输出:

>>> res
[-45, 64, -41, -51, 95, 96, -74, -74, 56, 41, 41, 64, -62, 75]

【讨论】:

    【解决方案3】:
    myArray = []
    fo = open("file.txt", "r")
        for line in fo:
            for nbr in line.split():
                myArray.append(int(nbr))
    print myArray
    

    【讨论】:

      【解决方案4】:

      我认为这应该可行

      将 numpy 导入为 np

      numbers = np.loadtxt('filename.txt', delimiter = '\t')

      【讨论】:

        【解决方案5】:

        您缺少split() 步骤。

        将整个文本(是的,整个文本,包括换行符)加载到一个字符串中,并在其上调用split() 方法,不带任何参数——这将拆分为可能是您想要的任何空格。然后将mapint 放到结果上以生成您想要的ints 的生成器。如果您确实需要具体化,请在生成器上使用 list()

        请注意,纯python中没有“整数数组”之类的东西(有一个包装C数组的模块array,您通常使用它来提高内存效率),只有lists,可以容纳任何类型。您可以确保它在制作时仅包含 ints。

        【讨论】:

        • 更仔细地检查问题。在这种情况下,不需要对 map() 的结果进行 list() 调用。
        猜你喜欢
        • 1970-01-01
        • 2017-11-03
        • 2011-04-27
        • 2021-06-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2021-03-30
        • 2021-12-24
        相关资源
        最近更新 更多