代码之家  ›  专栏  ›  技术社区  ›  knight

从每个列表条目中删除“A-Z”(如果它在Python中)

  •  -2
  • knight  · 技术社区  · 2 年前

    抱歉,这可能是一个简单的问题,但很难找到最好的方法。我有下面这样的列表,我想删除所有包含任何字母和的部分。之后

    所以我想改变这个。

    list = ['A. Person', 'B. House', 'H. Normal', 'My House', 'Hello World']
    

    并将其转化为这个。

    list = ['Person', 'House', 'Normal', 'My House', 'Hello World']
    

    做这件事最简单的方法是什么?我最初想 startswith("") 但看到所有的开头字母都不一样,我想不出该放什么。也许regex是最好的答案?

    非常感谢!

    4 回复  |  直到 2 年前
        1
  •  3
  •   Mayur Buragohain Doaa Magdy    2 年前

    试试这个?

    original_list = ['A. Person', 'B. House', 'H. Normal', 'My House', 'Hello World']
    
    pattern = r'^[A-Z]\.\s*'
    filtered_list = [re.sub(pattern, '', item) for item in original_list]
    
    print(filtered_list)
    
        2
  •  2
  •   Loocid    2 年前

    假设只有一个周期,你可以除以“.”,取最后一个元素。

    l = ['A. Person', 'B. House', 'H. Normal', 'My House', 'Hello World']
    l = [i.split(". ")[-1] for i in l]
    print(l)
    >>> ['Person', 'House', 'Normal', 'My House', 'Hello World']
    
        3
  •  0
  •   strojan    2 年前

    如果格式总是这样 A. Person 然后您可以简单地重复列表,如下所示

    letters = ["A.", "B.", ...]
    
    for entry in list:
      for letter in letters:
        if letter in entry:
          entry = entry.replace(letter, "")
    
        4
  •  0
  •   SIGHUP    2 年前

    更改数据以考虑其他可能性:

    import re
    
    p = re.compile(r'[A-Z]\.\s*')
    
    _list = ['Mr A. P. Person', 'B.House', 'H. Normal ', 'My House', 'Hello World']
    
    print(*(p.sub('', e) for e in _list), sep='\n')
    

    输出:

    Mr Person
    House
    Normal 
    My House
    Hello World