python:将字符串列表中的部分字符串与另一个列表中的项进行比较,并生成第三个列表



给定具有各自标题的姓名列表(列表a),我正在遍历它以确定每个条目的标题(先生,夫人,博士等)。通过将其与恰好包含这些标题的另一个列表(列表B)进行比较并创建另一个列表(列表C),仅包含其标题。以防有一个名字在列表中列出的头衔不是B,那么列表C应该填入列表a中的全部名称。

以下代码:

A = [
'Anna, Mrs. James (Nadia Elf)',
'Martin, Mr. Michael',
'Barese, Mr. Alfred',
'Amalfi, Mrs. Abby (J E V)',
'Manuel, Dr. Louis'
]
C=[]
B=['Mrs.','Mr.','Dr.']
for i in A:
for j in B:
if j in i:
C.append(j)

print(C) # prints ['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Dr.']

打印正确的输出,这是因为A中包含的所有标题都显示在B中,但如果我稍微改变一下上面的代码,将列表A中的最后一项编辑为'card '。’而不是‘Dr’

A = [
'Anna, Mrs. James (Nadia Elf)',
'Martin, Mr. Michael',
'Barese, Mr. Alfred',
'Amalfi, Mrs. Abby (J E V)',
'Manuel, card. Louis'
]
C=[]
B=['Mrs.','Mr.','Dr.']
for i in A:
for j in B:
if j in i:
C.append(j)
else:
C.append(i)
print(C)

我想看到这个输出['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Manuel, card. Louis']

,而是,它打印

['Mrs.', 'Anna, Mrs. James (Nadia Elf)', 'Anna, Mrs. James (Nadia Elf)', 'Martin, Mr. Michael', 'Mr.', 'Martin, Mr. Michael', 'Barese, Mr. Alfred', 'Mr.', 'Barese, Mr. Alfred', 'Mrs.', 'Amalfi, Mrs. Abby (J E V)', 'Amalfi, Mrs. Abby (J E V)', 'Manuel, card. Louis', 'Manuel, card. Louis', 'Manuel, card. Louis']

如何解决这个问题?

应该可以。在您的代码中,对于B中的每个元素,它试图在A中找到它-如果不匹配,仍然将i附加到c

A = [
'Anna, Mrs. James (Nadia Elf)',
'Martin, Mr. Michael',
'Barese, Mr. Alfred',
'Amalfi, Mrs. Abby (J E V)',
'Manuel, card. Louis'
]
C=[]
B=['Mrs.','Mr.','Dr.']
for i in A:
contains = False
for j in B:
if j in i:
contains = True
break

if contains:
C.append(j)
else:
C.append(i)
print(C)

输出:['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Manuel, card. Louis']

相关内容

  • 没有找到相关文章

最新更新