我想在一個python串列中分割資料,并取索引號1,但串列中的格式不一樣,有些元素不需要分割,因為它只有一個元素。
a = ['a,b', 'b,c','d,e','e']
我應用代碼:
a.apply(lambda x: x.split(',') [1]
當我運行它時,a[3]的結果是超出范圍的錯誤,因為它沒有索引1。(錯誤資訊:IndexError: list index out of range)
我如何處理這個問題?我仍然想拆分其余的元素,但是對于不能拆分的元素,應該保持原樣。
uj5u.com熱心網友回復:
你可以使用re.findall與一個串列理解:
a = ['a,b', 'b,c', 'd,e','e']
output = [re.findall(r'^[^,] ', x)[0] for x in a]
print(output) # ['a', 'b', 'd', 'e']/span>
這里的邏輯是,重碼模式'^[^,] 將捕獲每個串列元素中CSV的第一個術語(包括那些只有一個CSV條目的元素)。
uj5u.com熱心網友回復:
你可以使用這樣的方法:
out = [x. split(',')[1] if ' 。 ' in x else x for x in a] 。
輸出將是。['b', 'c', 'e', 'e']/code>
uj5u.com熱心網友回復:
如果你想使用apply,你可以使用map,如下:
a = ['a,b', 'b,c','d,e','e']
list(map((lambda X : x. split(',')[1] if ' , ' in x else x), a) )
# ['b', 'c', 'e', 'e']/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325727.html
標籤:
上一篇:我可以用這些資料制作箱線圖嗎?
