[英]Slicing string object in Array
def shorten_string(arr):
newchar = []
for char in arr:
#for z in char:
if char[-2:] == "Ja":
newchar = char[0:-2]
elif char[-4:] == "Nein":
newchar = char[0:-4]
newchar.append(char)
return newchar
讀取包含以下字符串的數組:
arr = ["KK_abc_Nein","KK_abc_Ja","KK_def_Nein","KK_def_Ja"]
我想找出最后一個字母是否與字符串對象匹配,然后將沒有_Nein或_Ja的字符串附加到數組中並返回它。
'str' object has no attribute 'append'
大多數時候我都會收到這個錯誤。
基本上,您當前正在通過newchar
分配一個字符串來覆蓋newchar
列表。
相反,您可以使用split()
、 pop()
和join()
來完成這項工作:
def shorten_string(arr):
known_ends = ["Ja", "Nein"]
newchar = []
for char in arr:
char = char.split("_")
end = char.pop()
if end in known_ends:
newchar.append("_".join(char))
return newchar
這將適用於任意數量的“單詞”
>>> arr = ["KK_abc_Nein","KK_abc_Ja","KK_def_Nein","KK_def_Ja"]
>>> shorten_string(arr)
>>> ['KK_abc', 'KK_abc', 'KK_def', 'KK_def']
編輯:添加了列表known_ends
以輕松更新要處理的結束列表,而不是重載if
語句
對於此示例,您可以簡單地執行以下操作:
arr = [x.replace('_Nein','').replace('_Ja','') for x in arr]
關於什么:
arr = ["KK_abc_Nein","KK_abc_Ja","KK_def_Nein","KK_def_Ja"]
b = [ s.replace('_Nein', '').replace('_Ja', '') for s in arr]
print(b)
會輸出
['KK_abc', 'KK_abc', 'KK_def', 'KK_def']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.