【问题标题】:Read .arrays txt files with python?用python读取.arrays txt文件?
【发布时间】:2012-06-22 12:01:04
【问题描述】:

传统上,要在 python 中读取一个用数组填充的文件,我使用以下语法

x, y, z = loadtxt("myfile.txt", unpack=True)

它适用于单数组文件。

现在,我有一个更复杂的文件:

1.5 3.5 2.5 1.6
4
3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
1 2
3 4
5 6

我想做的是以下事情:

1.5 3.5 2.5 1.6 -> 我想把它们放在一个由三个变量 + 1 个标量组成的数组中

4 -> A = 4,我的第一个数组的行数

3 -> B = 3,我的第二个数组的行数

我想在 5 个变量中加载 A = 4 行的第一个数组(如命令 loadtxt("", unpack = True)

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20

我想在 2 个变量中加载 B = 3 行的第一个数组(如命令 loadtxt("", unpack = True)

1 2
3 4
5 6

有没有什么技术可以在 python 中做这种事情?

非常感谢。

【问题讨论】:

  • 这是一个非常简单的解析任务。你试过什么?
  • 我对python不是很了解,所以不知道如何解析几个数组大小的文件。
  • 第一行看不懂。另外,如何区分nx1数组和数组长度?

标签: python arrays file numpy


【解决方案1】:

您正在指定自己的文件格式,这不是很有用。我建议使用现有格式,例如 JSON:

我的文件.txt:

{
    "a" : [
        [1, 2, 3, 4, 5],
        [6, 7, 8, 9, 10],
        [11, 12, 13, 14, 15],
        [16, 17, 18, 19, 20]
    ],
    "b" : [
    ...
    ]
}

read.py

import json
myfile = open("myfile.txt")
myVars = json.load(myfile)
myfile.close()
myVars['a']

【讨论】:

    【解决方案2】:

    你可以像这样在 python 中打开一个文件:

    f = open("myfile.txt")
    

    现在您可以遍历所有行,并且可以在每一行中用空格分隔:

    for line in f.readlines():
        linearray = line.split(' ')
        arraylength = len(linearray)
        print("Array length: "+str(arraylength))
    

    剩下的看你自己了。

    【讨论】:

    • 我喜欢这种方法,只要保证文件中的行在每个数字之间只有 1 个空格。例如len("1-2-3").split('-') = 3,而len("1--2--3").split('-') = 5。您可能希望先从文件中读取的行加一个空格。编辑:我尝试在评论中使用空格,但格式不正确。不过,破折号的想法相同。
    • 你不需要.split(' '),只需.split()
    • (1) with open("myfile.txt") as f: 是一个更好的习惯; (2) for line in f: 与调用.readlines() 一样好用,并且具有更好的内存特性; (3) linearray = line.split() 将同时处理多个空格和制表符。
    • 感谢您的 cmets。但我也想让代码尽可能地自我描述。使用您的建议是更好的做法,但在我看来,这更多的是关于基本理解。
    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多