使用列表推导从空值返回列表项

时间:2019-05-04 19:58:39

标签: python list-comprehension

我正在使用列表推导来获取由字符串内的分号;分隔的数值列表。

我需要从分号两边的缺失值中获取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)

1 个答案:

答案 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]