我正在使用列表推导来获取由字符串内的分号;
分隔的数值列表。
我需要从分号两边的缺失值中获取0。
不丢失值的示例字符串:
job_from_serial_st = 'xxxxx\rxxxxxx\rxxxx\rGAX=77.00;85.00\rxxxxx\r'
使用列表理解,我将获得以下值列表:[7700, 8500]
但是如何从'GAX=77.00;\r'
或'GAX=;85.00\r'
之类的字符串中获取值列表?
我希望从示例字符串中获取缺少值的以下列表:
[7700, 0]
或[0, 8500]
def get_term(A, B, phrase):
n = A.len()
start = phrase.find(A) + n
end = phrase.find(B, start)
term = phrase[start:end]
return term
# GET GAX NUMBER
gax_nums = get_term(r'GAX=', r'\r\x1e\x1d', job_from_serial_st)
gax = [int(float(x) * 100) for x in gax_nums.split(';')]
print(gax)
答案 0 :(得分:1)
如果在分号之前或之后没有数字,则可以向列表推导添加条件,以返回0(也可以使用一系列拆分从字符串中检索数字来替换函数)。
s = 'xxxxx\rxxxxxx\rxxxx\rGAX=77.00;\rxxxxx\r'
nums = s.split('GAX=')[1].split('\r')[0].split(';')
gax = [int(float(n) * 100) if n else 0 for n in nums]
print(gax)
# [7700, 0]