如何從多個字串串列追加我不知道是什么,但我需要使用分號作為 Python 中的分隔符分隔成新的不同串列?例如,如果我得到以下字串串列:
example = ['pineapple; lemon; watermelon']
我需要得到以下結果:
list1 = ["pineapple"]
list2 = ["lemon"]
list3 = ["watermelon"]
并在給定新字串時以相同的邏輯和順序追加
PS:由于我將給出的串列中沒有模式,我不能只使用
list1.append(example[0:number])
對于任務,這是我嘗試過的。
uj5u.com熱心網友回復:
如果您真的需要每個變數都是一個包含單個字串的串列(這很不尋常,但與您的輸入一致),您可以這樣做:
list1,list2,list3 = ([s] for s in example[0].split('; '))
這適用于給出的示例,但它引出了一個問題:您的原始串列可以包含多個字串嗎?字串可以包含多于(或少于)由分號分隔的 3 個部分嗎?您真的需要其中包含單個字串的串列作為輸出嗎?在您的問題中,要在什么規則下進行“附加”操作?
有了所有這些問題的答案,您的請求可能會有非常不同的解釋。例如,將源串列中每個字串的 3 個部分附加到對應的 3 個串列中。在這種情況下,您可以有這樣的輸入和輸出:
list1 = []
list2 = []
list3 = []
example = ['pineapple; lemon; watermelon',
'apple; orange; banana',
'grape; peach; pear']
lists = [list1,list2,list3]
for aString in example:
for aList,part in zip(lists, aString.split('; ')):
aList.append(part)
輸出:
list1: ['pineapple', 'apple', 'grape']
list2: ['lemon', 'orange', 'peach']
list3: ['watermelon', 'banana', 'pear']
uj5u.com熱心網友回復:
你要
output_lists = [list(map(str.strip, s.split(';'))) for s in example]
那么您想要的結果是output_lists[i][j],其中i是示例中原始串列j的位置,以及被拆分的字串中的位置。
解釋:
s.split(';')使用分號分隔的字串并回傳元素串列map(str.strip, s.split(';'))從字串串列中的每個元素的開頭和結尾洗掉空格list(map())將 的輸出map轉換為list(map回傳一個 python迭代器)[list(map()) for s in example]是一個python串列理解
如果由于某種原因你需要你的輸出是單例串列,那么你可以這樣做
def singleton_strip(to_strip):
return [to_strip.strip()]
output_lists = [list(map(singleton_strip, s.split(';'))) for s in example]
如果您知道所有元素總是由 分隔,'; '那么您可以執行s.split('; ')并洗掉list(map())構造。
uj5u.com熱心網友回復:
這是一個快速而骯臟的實作。我相信這可以通過各種方式改進并提高效率,但它可以解決您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388183.html
上一篇:提取包含特定單詞的行
