下面是拆分句子“s”的代碼。
s = "1 a 3 bb b8"
b = s.split()
print(b)
上述代碼的輸出是['1', 'a', '3', 'bb', 'b8'].
所需的輸出是['1', 'a', '3', 'bb', ' b8']。請注意,最后一個欄位中只有一個空格。
uj5u.com熱心網友回復:
這是一個棘手的問題,它很難使用泛型函式,因此需要一些自定義代碼。
我s = s = "1 a 3 bb b8"在 b8 之前使用了 3 個空格以使其更有趣:)
因此,您可以做的第一件事是明確指定 split 中的限制器:
s.split(' ')
將給出以下結果:['1', 'a', '3', 'bb', '', '', 'b8']
現在您必須將 解釋''為' '需要添加到下一個非空字串中。在下面的 for 回圈中,您將實作將空格放在預期位置的“業務規則”。
split_list = []
buffer = ''
for elt in temp_split:
if elt != "":
split_list.append(buffer elt)
buffer = ''
else:
buffer = ' '
print(split_list)
結果是:['1', 'a', '3', 'bb', ' b8']
uj5u.com熱心網友回復:
該代碼不是最好的,也不是很有效,但它可以作業。它將空格作為欄位分隔符和空格作為資料,后者被替換為特殊字串(例如$KEEP_THAT_SPACE$)。在下一步中,字串被用作欄位分隔符的空格分隔。然后將所有元素中的所有特殊字串重新替換為空白。
#!/usr/bin/env python3
s = "1 a 3 bb b8"
# assume that there are only two-character-spaces
keep_placeholder = '$KEEP_THAT_SPACE$'
s = s.replace(' ', f' {keep_placeholder}')
b = s.split()
for index, element in enumerate(b): # <- iterat
while keep_placeholder in element:
element = element.replace(keep_placeholder, ' ')
b[index] = element
print(b)
輸出是['1', 'a', '3', 'bb', ' b8'],請看最后一個欄位的開頭只有一個空格。
如果您有兩個以上空格的欄位,則可以輕松采用該代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472719.html
上一篇:從數字串列創建串列串列
