python - 在python中读取字符串
问题描述
我正在使用python尝试将信息与这种类型的字符串分开:
r = "(-0.04530261550379927+0j) [X0 X1 Y2 Y3]"
最终我需要的信息是括号中的数字,并将字母与数组中的数字分开。所以在上面的例子中,我想得到的结果是: number -0.04530261550379927
,一个 array:[X, X, Y, Y]
和另一个 array: [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()
返回所有捕获组的列表(在我们的例子中为 2 个),我们将列表解压缩为 variables number
,array
接下来,我们将存储在array
空间中的字符串拆分并遍历项目:
- 第一个字符附加到
a1
- 第二个字符转换为 int 并附加到
a2
输出:
-0.04530261550379927 ['X', 'X', 'Y', 'Y'] [0, 1, 2, 3]
推荐阅读
- flutter - 使连续的按钮在颤动中具有相同的宽度
- ios - 如何设置按钮以根据星期几显示不同的视图控制器?
- javascript - 显示图片时禁用提交按钮
- ios - 如何将tableView单元格行数据保存和编辑到coredata和设备联系人?
- javascript - React Ace 编辑器标记突出显示整行,甚至定义为限制列的 startCol 和 endCol
- swift - NavigationItem TitleView 约束不起作用
- c++ - C++循环只读取第一行
- python - 根据另一个列表中的元素查找列表中的元素
- azure - 容器化应用服务上的 azure webjob
- ruby-on-rails - 一个类被传递给 `:class_name` 但我们期待一个字符串