读取 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 个),我们将列表解压缩到变量 number
、array
接下来,我们将存储在 array
中的字符串拆分为 space 并遍历项目:
- 第一个字符附加到
a1
- 第二个字符被转换为 int 并附加到
a2
输出:
-0.04530261550379927 ['X', 'X', 'Y', 'Y'] [0, 1, 2, 3]
我正在使用 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 个),我们将列表解压缩到变量 number
、array
接下来,我们将存储在 array
中的字符串拆分为 space 并遍历项目:
- 第一个字符附加到
a1
- 第二个字符被转换为 int 并附加到
a2
输出:
-0.04530261550379927 ['X', 'X', 'Y', 'Y'] [0, 1, 2, 3]