如何在将句子拆分为列表时保留白色 space?
How to keep the white space when splitting sentence to a list?
下面是拆分句子“s”的代码。
s = "1 a 3 bb b8"
b = s.split()
print(b)
以上代码的输出是['1', 'a', '3', 'bb', 'b8']
。
所需的输出是 ['1', 'a', '3', 'bb', ' b8']
。注意最后一个字段只有一个白色space
这是一个棘手的问题,很难使用通用函数,因此需要一些自定义代码。
我把 s = s = "1 a 3 bb b8"
和 b8 前的 3 个空格放在一起,让它更有趣:)
因此,您可以做的第一件事就是在拆分中明确指定限制器:
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']
该代码不是最好的,也不是很有效,但它可以工作。它潜水 spaces 作为字段分隔符和 spaces 作为数据,后者被特殊字符串替换(例如 $KEEP_THAT_SPACE$
)。在下一步中,字符串被作为字段分隔符的 space 分割。那么所有元素中的所有特殊字符串都是 re-replaced 和空白。
#!/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']
,请注意最后一个字段的开头只有一个空格space。
如果您的字段有两个以上的空白 space,则可以轻松采用该代码。
下面是拆分句子“s”的代码。
s = "1 a 3 bb b8"
b = s.split()
print(b)
以上代码的输出是['1', 'a', '3', 'bb', 'b8']
。
所需的输出是 ['1', 'a', '3', 'bb', ' b8']
。注意最后一个字段只有一个白色space
这是一个棘手的问题,很难使用通用函数,因此需要一些自定义代码。
我把 s = s = "1 a 3 bb b8"
和 b8 前的 3 个空格放在一起,让它更有趣:)
因此,您可以做的第一件事就是在拆分中明确指定限制器:
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']
该代码不是最好的,也不是很有效,但它可以工作。它潜水 spaces 作为字段分隔符和 spaces 作为数据,后者被特殊字符串替换(例如 $KEEP_THAT_SPACE$
)。在下一步中,字符串被作为字段分隔符的 space 分割。那么所有元素中的所有特殊字符串都是 re-replaced 和空白。
#!/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']
,请注意最后一个字段的开头只有一个空格space。
如果您的字段有两个以上的空白 space,则可以轻松采用该代码。