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

qpgpyjmq  于 2023-08-08  发布在  Python
关注(0)|答案(4)|浏览(107)

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

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

字符串
把它变成这样。

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


最简单的方法是什么?我最初想到了一个startswith(""),但不知道该放什么进去,因为所有的开头字母都不一样。也许正则表达式是最好的答案?
非常感谢提前!

mbzjlibv

mbzjlibv1#

试试这个

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)

字符串

klr1opcd

klr1opcd2#

假设只有一个时期,你可以用“”来分割。“并取最后一个元素。

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']

字符串

jmp7cifd

jmp7cifd3#

如果格式总是类似于A. Person,那么您可以简单地像下面这样迭代列表

letters = ["A.", "B.", ...]

for entry in list:
  for letter in letters:
    if letter in entry:
      entry = entry.replace(letter, "")

字符串

cnjp1d6j

cnjp1d6j4#

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

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

相关问题