【问题标题】:How to remove substring after a specific character in a list of strings in Python如何在Python中的字符串列表中的特定字符之后删除子字符串
【发布时间】:2020-07-23 10:26:46
【问题描述】:

我有一个字符串标签列表。我想在第二个“。”之前保留非常元素的子字符串。并删除第二个“。”之后的所有字符。 我发现帖子显示了如何使用 split 函数对文本字符串执行此操作。但是,列表数据类型没有拆分功能。实际的数据类型是 pandas.core.indexes.base.index 对我来说似乎是一个列表。 对于列表中的第一个元素,我想保留L1.Energy 并删除第二个“。”之后的所有内容。

current_list = ['L1.Energy.Energy', 'L1.Utility.Energy', 'L1.Technology.Utility', 'L1.Financial.Utility']
desired_list = [L1.Energy', 'L1.Utility', 'L1.Technology,'L1.Financial']

【问题讨论】:

  • 公平地说,我认为 Błotosmętek 有最好的解决方案 ;) 但基本上它们都有效
  • 有什么问题呢? 我发现帖子显示了如何使用 split 函数对文本字符串执行此操作。但是,列表数据类型没有拆分功能。 这没什么意义,为什么要对列表使用拆分技术,而不是元素本身? 实际的数据类型是 pandas.core.indexes.base.index,对我来说似乎是一个列表。不可能两者都是,对吧?

标签: python numpy replace split


【解决方案1】:

这里是一个单行者:

desired_list = [ s[:s.find(".",s.find(".")+1)] for s in current_list]

【讨论】:

    【解决方案2】:
    current_list = ['L1.Energy.Energy', 'L1.Utility.Energy', 'L1.Technology.Utility', 'L1.Financial.Utility']
    
    desired_list = [ '.'.join(x.split('.')[:2]) for x in current_list ]
    

    顺便说一句,如果您的标签有两个以上的点(例如 'L1.Utility.Energy.Electric'),这也可以使用

    【讨论】:

      【解决方案3】:

      在这里,它很丑,但它有效

      bob = ['L1.Energy.Energy', 'L1.Utility.Energy', 
      'L1.Technology.Utility','L1.Financial.Utility']
      result = []
      
      for i in bob:
          temp = i.split(".")
          result.append(temp[0] + "." + temp[1])
      print(result)
      

      【讨论】:

        【解决方案4】:

        regex的解决方案:

        desired_list = [re.sub('(\..*)(\..*)',r'\1', s) for s in current_list]
        

        输出:

        ['L1.Energy', 'L1.Utility', 'L1.Technology', 'L1.Financial']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-06-29
          • 2020-06-17
          • 1970-01-01
          • 2020-06-02
          • 2020-05-01
          • 1970-01-01
          • 2015-10-02
          相关资源
          最近更新 更多