繁体   English   中英

在 python 列表中的同一元素中分离混合浮点数/字符串

[英]Separating mixed float/string in same element in python list

我有一个这样的列表

A = [14, 15.2, '22.6g', '27.28g', '10g', '15.2R', '12.4k']

我想将列表 A 分成两个列表,例如

B = [14, 15.2, 22.6, 27.28, 10, 15.2, 12.4]

C = ['NA', 'NA', 'g', 'g', 'g', 'R', 'k']

如果数字和字母之间没有某种分隔符,我不确定如何完成此操作。

假设单位始终是一个字符长,您可以使用如下列表推导式:

B, C = map(list, zip(*[[float(x[:-1]), x[-1]] if isinstance(x, str) else [x, 'NA'] for x in A]))

Output:

[14, 15.2, 22.6, 27.28, 10.0, 15.2, 12.4]    

['NA', 'NA', 'g', 'g', 'g', 'R', 'k']

如果单位长度超过 1 个字符,我们可以使用splitter符 function:

def splitter(x):
    num, unit = '', ''
    for i in x:
        if i.isdigit() or i=='.':
            num += i
        else:
            unit += i
    return [float(num), unit]

B, C = map(list, zip(*[splitter(x) if isinstance(x, str) else [x, 'NA'] for x in A]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM