代码之家  ›  专栏  ›  技术社区  ›  Md. Rezwanul Haque

从python中的字符串中获取特定的子字符串

  •  1
  • Md. Rezwanul Haque  · 技术社区  · 8 年前

    如何存储 lst1 = [26.7,8.2,13.7,8.6,16] 训练等级1 在里面 python ?

    Train_level1 = ['1_Rehana_Karim_F49_850_GL=26.7','43_G.M.Alauddin Azad_M42_940_GL=8.2','110_Ronojeet_Bishwash_M47_940_GL=13.7','112_Mustafizur_Rahman_M60_850_GL=8.6','123_Farida_Yeasmin_F55_940_GL=16']
    

    同样,如何存储 lst2 = [11.5,12.9,9.2] 第二级训练 在里面 蟒蛇 ?

    Train_level2 = ['S140_M75_GL=11.5-850LEDFon_F=110.jpg', 'S85_F56_GL=12.9-940LEDFon_F=105.jpg', 'S108_M71_GL=9.2-850LEDFon_F=100.jpg']
    
    2 回复  |  直到 8 年前
        1
  •  5
  •   galfisher    8 年前

    为了 Train_level ,您需要在 = 所以我们使用 split() 在字符串列表中按 = 并获取索引0中的第二个字符串:

    lst1 = [float(train.split('=')[1]) for train in Train_level1]
    

    为了 Train_level2 ,这是相似的,除了我们需要做两个分割-第一个到 = 并获取第二个字符串(索引1),然后按 - 并获取第一个字符串(索引0):

    lst2 = [float(train.split('=')[1].split('-')[0]) for train in Train_level2]
    

    我们使用 float() 从那以后的结果 split 返回字符串,但输出是数字列表,而不是字符串。 float 将包含数字的十进制字符串转换为浮点数。

        2
  •  2
  •   Patrick Artner    8 年前

    可以使用regex解析数字:

    import re
    
    Train_level1 = ['1_Rehana_Karim_F49_850_GL=26.7',
                    '43_G.M.Alauddin Azad_M42_940_GL=8.2',  
                    '110_Ronojeet_Bishwash_M47_940_GL=13.7',
                    '112_Mustafizur_Rahman_M60_850_GL=8.6',
                    '123_Farida_Yeasmin_F55_940_GL=16']
    
    Train_level2 = ['S140_M75_GL=11.5-850LEDFon_F=110.jpg', 
                    'S85_F56_GL=12.9-940LEDFon_F=105.jpg', 
                    'S108_M71_GL=9.2-850LEDFon_F=100.jpg']
    
    
    def parseIt(data):
        p1 = r"=(\d+\.?\d*)" # find '=' followed numbers followed by optional '.' + more numbers
        return [float(x[0]) for x in (re.findall(p1,y) for y in data) if x] 
    
    
    print(parseIt(Train_level1))
    print(parseIt(Train_level2))
    

    输出:

    [26.7, 8.2, 13.7, 8.6, 16.0]
    [11.5, 12.9, 9.2]
    

    列表comp和regex是相同的,因此我为它创建了一个函数。它们将regex应用于每个list元素。你只有一个 =99.99 每个列表中的元素,这样我们就可以将其转换为一个浮点。