考慮下面的例子混淆串分割方法在Python
a= 'Apple'
b = a.split(',')
print(b)
輸出是['Apple']
。
我沒有得到爲什麼它返回一個列表,即使存在Apple
沒有','
角色有可能是當我們用拆分法,我們不止一個元素預計在列表中,但因爲我們是分裂的情況下基於分隔字符串不存在,會出現只有一個元素,那豈不是更好,如果這個錯誤是這種拆分方法本身
考慮下面的例子混淆串分割方法在Python
a= 'Apple'
b = a.split(',')
print(b)
輸出是['Apple']
。
我沒有得到爲什麼它返回一個列表,即使存在Apple
沒有','
角色有可能是當我們用拆分法,我們不止一個元素預計在列表中,但因爲我們是分裂的情況下基於分隔字符串不存在,會出現只有一個元素,那豈不是更好,如果這個錯誤是這種拆分方法本身
當a
中不存在逗號時,a.split(',')
的行爲與a
中存在正數的逗號時的行爲方式完全一致。
a.split(',')
表示將字符串a
分割成由','
在a
分隔的子字符串列表;分隔符不保存在子字符串中。
如果發現1個逗號你得到2子在列表中,如果2個逗號發現你在列表3子,而在一般情況下,如果ñ逗號發現你在N + 1子列表。所以如果找到0個逗號,你會在列表中得到1個子字符串。
如果你想在列表中有0個子字符串,那麼你需要提供一個帶有-1個逗號的字符串。祝你好運。 :)
該方法的文檔字符串表示時發生了:
返回w的列表字符串S中的ords,使用sep作爲分隔符字符串。
分隔符用於分隔字符串的多個部分;只有一個部分不是錯誤。
這就是split()
函數的工作方式。如果你不想要這種行爲,你可以按如下方式實現你的my_split()
功能:
def my_split(s, d=' '):
return s.split(d) if d in s else s
什麼錯誤?如果它是**而不是錯誤地分隔了一個缺少的分隔符?如果分隔符是可選的呢?您可以更輕鬆地測試所得的長度。 –
你想發生什麼?應該提出一個例外? –
這樣做的好處是你總是知道你後來有一個列表,簡化了後續處理。 – jonrsharpe