如何将一行转换为列表?

我想将下面的行转换为列表:

OK      DiskDrive       SDX  SAMSUNG MZNLN256HMHQ-000H1       SCSI\DIS...

我的输出应该是这样的:

['OK', 'DiskDrive', 'SDX  SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\DIS...']

我试过这个并没有成功地得到我想要的东西:

List = re.sub("(\w+\s{0,2}+\w)", " ", line).split()


至尊宝的传说
浏览 120回答 3
3回答

哔哔one

如果我理解正确,您想连续分割超过 2 个空格。为此,您可以使用re's ownsplit而不是处理sub. 表示超过 2的{3,}方法是从 3 到无限次:import res = "OK      DiskDrive       SDX  SAMSUNG MZNLN256HMHQ-000H1       SCSI\DIS"print(re.split("\s{3,}", s))给出:['OK', 'DiskDrive', 'SDX  SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\\DIS']

慕丝7291255

您可以使用内置字符串方法执行此操作,方法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 ''只是确保您最终列表中不会出现任何空字符串。

冉冉说

使用 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python