簡體   English   中英

切片數組中的字符串對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM