我正在使用一个数据字符串,需要对其进行解释才能从“LpA:45dB 典型值,48dB 最大值”中获取键值为“45dB 典型值,48dB 最大值”。我尝试使用下面的代码,但得到了不同的字符串。
我尝试使用正则表达式模式解决问题 '(.*)LpA:(\w*)\n
data_str="""With AC power supply (with 24 PoE+ ports loaded for C9300 SKUs)
● LpA: 45dB typical, 48 dB max
● LwA: 5.6B typical, 5.9B max
With AC power supply (with half the number of PoE+ ports loaded for C9300L SKUs)
● LpA: 44dB typical, 47 dB max
● LwA: 5.5B typical, 5.8B max
Typical: Noise emission for a typical configuration
Maximum: Statistical maximum to account for variation in production"""
pattern_type=re.compile('(.*)LpA:(\w*)\n',re.I)
key = pattern_type.sub(r"\2","%r"%data_str)
print(key)
我希望:
'''典型值 45dB,最大值 48dB'''
但得到的结果是:
'''典型值 45dB,最大值 48dB
● LwA:5.6B 典型值,5.9B 最大值
使用交流电源(为 C9300L SKU 加载一半数量的 PoE+ 端口)
● LpA:典型值 44dB,最大值 47dB
● LwA:5.5B 典型值,5.8B 最大值
典型:典型配置的噪音排放
最大值:考虑生产变化的统计最大值'''
最佳答案
您似乎尝试匹配整个字符串,然后将其替换为匹配组之一。相反,只需使用 re.search
来得到那一个匹配组。此外,您可能希望使用 .
而不是 \w
,因为子字符串包含空格和其他非单词字符。
>>> pattern_type = re.compile('LpA: (.*)')
>>> key = pattern_type.search(data_str)
>>> key.group(1)
45dB typical, 48 dB max
关于python - 如何使用正则表达式解释字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710194/