在Python中删除列表中某些单词的第一个字符



我有以下列表。

filtered_sent = ['colombia', 'nnueva', 'revolución', 'nindustrial', 'npropuestas', 'foco', 'tecnologías', 'convergentes', 'ne', 'industrias', 'nvolumen', 'ncolombia', 'nartista', 'federico', 'uribe', 'npropuestas', 'foco', 'tecnologías', 'convergentes', 'ne', 'industrias', 'ntomo', 'ncolombia', 'nueva', 'nrevolución', 'nindustrial', 'vicepresidencia', 'república', 'colombia', 'ministerio', 'ciencia', 'tecnología', 'innovación', 'elías', 'niño', 'ruiz', 'jean', 'paul', 'allain', 'josé', 'alejandro', 'montoya', 'juan', 'luis']

我想删除每个以"n"开头的单词的第一个字符。(例如:'nnueva', 'nartista', 'nindustrial'等)

我试过了,但是它从列表的所有单词中删除了单词的第一个字符:

lista_A = [] 
for it in filtered_sent:
for j in it:
if j[0] == 'n':
lista_A.append(it[1:])

你可以试试:

filtered = [i[1:] if i[0] == 'n' else i for i in filtered_sent]

if块中的代码有一些逻辑问题。

最好同时比较单词的索引和第一个字符。

这段代码可以运行。

lista_A = [] 
for it in filtered_sent:
for i,j in enumerate(it):
if j == 'n' and i == 0:
lista_A.append(it)

print(lista_A)

使用内置str函数:

new_list = [word.removeprefix('n') for word in filtered_sent]

您可以尝试:

list(map(lambda word: word[1:] ,filter(lambda x:(x[0]=="n"),filtered_sent)))

回答问题,错误是第二个for循环("for j在其中:")。不需要遍历每个单词的每个字母。代码不是只检查每个单词的第一个字母是否等于"n",而是检查单词的任何字母是否等于"n"。在内部for循环的每次迭代中,j和j[0]都是对同一特定字母的引用。

你可以在你的代码中添加一些打印语句,以便更好地理解发生了什么。

lista_A = [] 
for it in filtered_sent:
for j in it:
print(f'it: {it}')
print(f'j: {j}')
print(f'j[0]: {j[0]}')
if j[0] == 'n':
lista_A.append(it[1:])

尝试删除第二个for循环,并更改if子句以检查单词的第一个字符:

lista_A = [] 
for it in filtered_sent:
if it[0] == 'n':
lista_A.append(it[1:])

相关内容

  • 没有找到相关文章

最新更新