读取 python 中的字符串

Reading strings in python

我正在使用 python 来尝试将信息与这种类型的字符串分开:

r = "(-0.04530261550379927+0j) [X0 X1 Y2 Y3]"

最终我需要的信息是括号中的数字,并将数组中的字母与数字分开。所以在上面的例子中,我想要得到的结果是:数字 -0.04530261550379927,一个数组:[X, X, Y, Y] 和另一个数组:[0, 1, 2, 3].

我一直在尝试 re.match,但由于这是我第一次使用这个模块,所以我觉得它很混乱。

非常感谢任何帮助。

你可以这样做:

import re

r = "(-0.04530261550379927+0j) [X0 X1 Y2 Y3]"
match = re.match(r"\(([-+]?\d+(?:\.\d+)?)\+\d+j\) \[((?:[XYZ]\d(?: [XYZ]\d)*)?)]", r)
number, array = match.groups()

number = float(number)
a1, a2 = [], []
for i in array.split():
    a1.append(i[0])
    a2.append(int(i[1]))

print(number, a1, a2)

解释:

正则表达式模式 r"\(([-+]?\d+(?:\.\d+)?)\+\d+j\) \[((?:[XYZ]\d(?: [XYZ]\d)*)?)]" 匹配给定的字符串:

  • 部分 ([-+]?\d+(?:\.\d+)?) 匹配数字
  • 部分((?:[XYZ]\d(?: [XYZ]\d)*)?)匹配数组
  • 有非捕获组定义为 (?:<match>)

match.groups() returns 所有捕获组的列表(在我们的例子中是 2 个),我们将列表解压缩到变量 numberarray

接下来,我们将存储在 array 中的字符串拆分为 space 并遍历项目:

  • 第一个字符附加到 a1
  • 第二个字符被转换为 int 并附加到 a2

输出:

-0.04530261550379927 ['X', 'X', 'Y', 'Y'] [0, 1, 2, 3]