有人可以幫我在 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:])
如果有人能告訴我我的錯誤,我將不勝感激,謝謝:)
uj5u.com熱心網友回復:
你可以試試:
filtered = [i[1:] if i[0] == 'n' else i for i in filtered_sent]
uj5u.com熱心網友回復:
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)
uj5u.com熱心網友回復:
使用內置str函式:
new_list = [word.removeprefix('n') for word in filtered_sent]
uj5u.com熱心網友回復:
你可以試試:
list(map(lambda word: word[1:] ,filter(lambda x:(x[0]=="n"),filtered_sent)))
uj5u.com熱心網友回復:
回答這個問題,錯誤是第二個 for 回圈(“for j in it:”)。無需遍歷每個單詞的每個字母。您的代碼不是僅檢查每個單詞的第一個字母是否等于 '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:])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342652.html
