【问题标题】:Python: how to retrieve some values from the elements of a list?Python:如何从列表的元素中检索一些值?
【发布时间】:2016-02-05 11:06:18
【问题描述】:

我有一个这样的元素列表:

mylist=['event_100of1000', 'event_17of1000', 'event_1000of1000',...]

如何仅提取事件的“编号”并生成另一个列表,例如:

extracted_list=['100','17','1000',...]?

【问题讨论】:

  • split() 应该有帮助

标签: python list extraction


【解决方案1】:

您可以将lstrip 用于您的event_,然后将split 用于'of'

res = [i.lstrip('event_').split('of')[0] for i in mylist]

print(res)
['100', '17', '1000']

编辑

res = [int(i.lstrip('event_').split('of')[0]) for i in mylist]

print(res)
[100, 17, 1000]

【讨论】:

  • 好的,我猜列表中的元素是字符串。我可以把它们变成int吗?
  • 使用int()包装器?
  • 喜欢print(int(res))?
【解决方案2】:

您可以为此使用“正则表达式”....

>>> import re
>>> mylist=['event_100of1000', 'event_17of1000', 'event_1000of1000']
>>> [re.findall('_(\d+)', i)[0] for i in mylist]

['100', '17', '1000']

【讨论】:

    【解决方案3】:

    你可以使用地图:

      events = map(lambda x: x.split('of')[0], mylist)
      map(lambda x: x.split('_')[1], events)
    

    【讨论】:

      【解决方案4】:

      使用列表推导和正则表达式:

      import re
      mylist=['event_100of1000', 'event_17of1000', 'event_1000of1000',...]
      extracted_list = [re.search("\d+", x).group(0) for x in mylist]
      

      【讨论】:

        【解决方案5】:

        我也会用re

        import re
        mylist=['event_100of1000', 'event_17of1000', 'event_1000of1000']
        list_id_of = [re.search("event_(\d+)of(\d+)", e).groups() for e in mylist]
        
        [('100', '1000'), ('17', '1000'), ('1000', '1000')]
        

        【讨论】:

          【解决方案6】:

          重新使用

          import re
          mylist=['event_100of1000', 'event_17of1000', 'event_1000of1000']
          pattern = re.compile(r'^event_(\d+).')
          
          mylist = list(map(lambda x : pattern.findall(x)[0] , mylist))
          print(mylist)
          #['100', '17', '1000']
          

          【讨论】:

            【解决方案7】:

            为此使用map 函数:

            >>> extracted_list = map(lambda x: int(x[:x.find('of')].lstrip('event_')), mylist)
            >>> print extracted_list
            [100, 17, 1000]
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-27
              • 1970-01-01
              • 1970-01-01
              • 2021-12-09
              相关资源
              最近更新 更多