gpt4 book ai didi

Python RegEx 字符串解析不一致的数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:24 27 4
gpt4 key购买 nike

我有一个字符串,需要从中提取值。问题是字符串不一致。下面是包含该字符串的脚本示例。

import re

RAW_Data = "Name Multiple Words Zero Row* (78.59/0) Name Multiple Words2* (96/24.56) Name Multiple Words3* (0/32.45) Name Multiple Words4* (96/12.58) Name Multiple Words5* (96/0) Name Multiple Words Zero Row6* (0) Name Multiple Words7* (96/95.57) Name Multiple Words Zero Row8* (0) Name Multiple Words9*"

First_Num = re.findall(r'\((.*?)\/*', RAW_Data)
Seg_Length = re.findall(r'\/(.*?)\)', RAW_Data)
#WithinParenthesis = re.findall(r'\((.*?)\)', RAW_Data) #This works correctly

print First_Num
print Seg_Length

del RAW_Data

我需要从字符串中取出括号内的所有值。但是,我需要一些逻辑来处理数字之间缺少“/”的情况。基本上,如果“/”不存在,则使 First_Num 和 Seg_Length 的值都等于“0”。我希望这是有道理的。

最佳答案

使用简单的正则表达式并添加一些编程逻辑:

import re
rx = r'\(([^)]+)\)'
string = """Name Multiple Words Zero Row* (78.59/0) Name Multiple Words2* (96/24.56) Name Multiple Words3* (0/32.45) Name Multiple Words4* (96/12.58) Name Multiple Words5* (96/0) Name Multiple Words Zero Row6* (0) Name Multiple Words7* (96/95.57) Name Multiple Words Zero Row8* (0) Name Multiple Words9*"""

for match in re.finditer(rx, string):
parts = match.group(1).split('/')
First_Num = parts[0]
try:
Seg_Length = parts[1]
except IndexError:
Seg_Length = None

print "First_Num, Seg_Length: ", First_Num, Seg_Length

您可能会使用单独的正则表达式解决方案(例如使用条件正则表达式),但这种方法很可能在三个月内仍然被理解。请参阅 ideone.com 上的演示

关于Python RegEx 字符串解析不一致的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37034320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com