【问题标题】:Extracting elements from list using Python使用 Python 从列表中提取元素
【发布时间】:2017-03-12 12:39:47
【问题描述】:

如何从该列表中提取'1' '11''111'

T0 = ['4\t1\t\n', '0.25\t11\t\n', '0.2\t111\t\n']

提取'4''0.25''0.2'我使用了这个:

def extract(T0):
    T1 = []
for i in range(0, len(T0)):
    pos = T0[i].index('\t')
T1.append(resultat[i][0: pos])
return T1

然后我得到了:

T1 = ['4','0.25','0.2']

但对于其余部分,我不知道如何提取它 你能帮帮我吗?

【问题讨论】:

    标签: python-2.7 spyder


    【解决方案1】:

    使用您的代码作为基础,可以如下完成。如果是字母则返回字符串,否则返回十进制整数。

    def extract(T0): 
        T1=[] 
        for i in range len(T0):
            tmp = T0[i].split('\t')[1]
            if tmp.isalpha():
                T1.append(tmp)
            else:
                T1.append(int(tmp))
        return T1
    

    或者,尝试下面的使用列表理解的更紧凑的代码

    def extract(T0):
        # return as string if its alphabet else return as decimal integer
        # change int function to float if wanna return as float
        tmp = [i.split('\t')[1] for i in T0]
        return [i if i.isalpha() else int(i) for i in tmp]
    

    例子

    T0= ['X\tY\tf(x.y)\n', '0\t0\t\n', '0.1\t10\t\n', '0.2\t20\t\n', '0.3\t30\t\n']
    extract(T0) # return ['Y', 0, 10, 20, 30]
    

    【讨论】:

    • 谢谢!非常感谢您的帮助
    • 那么,要将这些元素中的每一个转换为数值,我应该使用哪个函数?
    • 您可以使用 int 函数将字符串转换为整数,使用 float 函数将字符串转换为浮点数。已经编辑我的答案以包含它
    • 它不起作用,因为我的列表开头包含'Y':['Y', '0', '10', '20', '30', '40', ' 50'、'60'、'70'、'80'、'90'、'100']
    • 所以你想在非数字时返回字符串,如果是数字则返回整数?如上应返回 ['Y', 0, 10, 20, 30, 40, 50, 60, 70, 80, 90] ?
    【解决方案2】:

    您可以使用 re 模块和列表推导来完成此操作。

    import re
    
    # create a regular expression object
    regex = re.compile(r'[0-9]{1,}\.{0,1}[0-9]{0,}') 
    
    # assign the input list
    T0 = ['4\t1\t\n', '0.25\t11\t\n', '0.2\t111\t\n']
    
    # get a list of extractions using the regex
    extractions = [x for x in [re.findall(regex, e) for e in T0]]
    
    print extractions
    # => [['4', '1'], ['0.25', '11'], ['0.2', '111']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多