3 回答
TA贡献1854条经验 获得超8个赞
如果我理解正确,您想连续分割超过 2 个空格。为此,您可以使用re's ownsplit而不是处理sub. 表示超过 2的{3,}方法是从 3 到无限次:
import re
s = "OK DiskDrive SDX SAMSUNG MZNLN256HMHQ-000H1 SCSI\DIS"
print(re.split("\s{3,}", s))
给出:
['OK', 'DiskDrive', 'SDX SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\\DIS']
TA贡献1859条经验 获得超6个赞
您可以使用内置字符串方法执行此操作,方法split是注意您只想在那些较大的空间上拆分:
final_list = [l.strip() for l in my_line.split(' ') if l is not '']
# ['OK', 'DiskDrive', 'SDX SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\\DIS...']
这if l is not ''只是确保您最终列表中不会出现任何空字符串。
TA贡献1877条经验 获得超1个赞
使用 findall: 重新排列至少一个非空白字符、三个空白字符、零个或多个非空白字符或任何字符。
string="OK DiskDrive SDX SAMSUNG MZNLN256HMHQ-000H1 SCSI\DIS"
pattern="([\S]+\s{0,2}[\S\w]*)"
matches=re.findall(pattern,string)
for match in matches:
print(match)
输出:
OK
DiskDrive
SDX SAMSUNG
MZNLN256HMHQ-000H1
SCSI\DIS
添加回答
举报