2016-11-27 70 views
-2

考慮下面的例子混淆串分割方法在Python

a= 'Apple' 
b = a.split(',') 
print(b) 

輸出是['Apple']

我沒有得到爲什麼它返回一個列表,即使存在Apple

沒有','角色有可能是當我們用拆分法,我們不止一個元素預計在列表中,但因爲我們是分裂的情況下基於分隔字符串不存在,會出現只有一個元素,那豈不是更好,如果這個錯誤是這種拆分方法本身

+3

什麼錯誤?如果它是**而不是錯誤地分隔了一個缺少的分隔符?如果分隔符是可選的呢?您可以更輕鬆地測試所得的長度。 –

+3

你想發生什麼?應該提出一個例外? –

+0

這樣做的好處是你總是知道你後來有一個列表,簡化了後續處理。 – jonrsharpe

回答

2

a中不存在逗號時,a.split(',')的行爲與a中存在正數的逗號時的行爲方式完全一致。

a.split(',')表示將字符串a分割成由','a分隔的子字符串列表;分隔符不保存在子字符串中。

如果發現1個逗號你得到2子在列表中,如果2個逗號發現你在列表3子,而在一般情況下,如果ñ逗號發現你在N + 1子列表。所以如果找到0個逗號,你會在列表中得到1個子字符串。

如果你想在列表中有0個子字符串,那麼你需要提供一個帶有-1個逗號的字符串。祝你好運。 :)

1

該方法的文檔字符串表示時發生了:

返回w的列表字符串S中的ords,使用sep作爲分隔符字符串。

分隔符用於分隔字符串的多個部分;只有一個部分不是錯誤。

0

這就是split()函數的工作方式。如果你不想要這種行爲,你可以按如下方式實現你的my_split()功能:

def my_split(s, d=' '): 
    return s.split(d) if d in s else s