python - 使用正则表达式提取不同行中标题的特定值
问题描述
我有包含多行的文本字符串,每行混合了字符/数字和空格等。
这是几行的样子:
WEIGHT VOLUME CHARGEABLE PACKAGES\n
398.000 KG 4.999 M3 833.500 KG 12 PLT\n
MAWB HAWB\n / MH616 /
8947806753 ABC20018830\n
我正在寻找的输出是将上述标头提取为键,并将它们的值提取为字典的值。
{
"WEIGHT": 398.00 KG,
"VOLUME" : 4.99 M3,
"CHAREGABLE" : 833.500 KG,
"PACKAGES": 12 PLT,
"MAWB" : 8947806753,
"HAWB" : ABC20018830
}
我不确定如何从其下的不同行中获取特定字段的值。如果它在同一行,我可以使用模式获取。但不确定如何从不同的行中获取它(该字段的值直接位于不同行的下方)。
解决方案
您可以使用正则表达式轻松地将文本拆分为包含所有字段的列表:
import re
a = "WEIGHT VOLUME CHARGEABLE PACKAGES\n 398.000 KG 4.999 M3 833.500 KG 12 PLT\n MAWB HAWB\n / MH616 / 8947806753 ABC20018830\n"
# Split on 4 (or more) whitespace (leaves the units with the numbers)
data = re.split(r'\s{4,}', a)
print(data)
['重量','体积','可充电','包装','398.000 KG','4.999 M3','833.500 KG','12 PLT','MAWB','HAWB','/ MH616 /' , '8947806753', 'ABC20018830\n']
由于键和值是混合的,因此可能没有一种简单的方法来自动确定哪个是哪个。但是,如果它们始终处于相同的位置,您可以手动将它们挑选出来,例如:
b = {
# WEIGHT
data[0]: data[4],
# VOLUME
data[1]: data[5]
}
推荐阅读
- command - 创建一个 .efi 以禁用 egpu,然后链式加载 bootmgfw.efi
- maven - 根据目标将不同的robots.txt注入war文件的最佳方法是什么?
- html - VBA Microsoft HTML对象库HTML文档HTMLUnknownElement不显示innerHTML或innerText
- perl - 如何在 Perl 中编写 require 语句以从模块中获取 %EXPORT_TAGS?
- android - 如何检查您通讯录中的某人是否安装了该应用程序
- matlab - 如何生成一个欧几里得长度的随机均匀分布向量?
- javascript - 通过 .addEventListener 迭代函数到 div 不起作用
- javascript - 类组件中的 ReactJs 嵌套路由切换
- python - 从数据框中的每个组中删除特定的一组行
- javascript - 如何定期更改状态值?