似乎要删除行开头的空白,并删除冒号前的所有空白。使用正则表达式:import re
re.sub(r'(^[ \t]+|[ \t]+(?=:))', '', str1, flags=re.M)
这会在行的开始处选取空格和制表符(^[ \t]*,^是行的开始,[ \t]是空格或制表符,+是1个或多个),或它会在冒号([ \t]+是1个或多个空格和制表符之前选取空格和制表符,(?=:)意味着:字符必须跟在后面,但不包含在选择的内容中),然后用空字符串替换这些空格和制表符。这里的flags=re.M是为了确保模式在每一行上工作。
演示:>>> import re
>>> str1 = """vendor_id\t: GenuineIntel
... cpu family\t: 6
... model\t\t: 58
... model name\t: Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz
... stepping\t: 9
... cpu MHz\t\t: 2485.659
... cache size\t: 6144 KB
... fpu\t\t: yes
... fpu_exception\t: yes
... cpuid level\t: 5
... wp\t\t: yes"""
>>> print re.sub(r'(^[ \t]+|[ \t]+(?=:))', '', str1, flags=re.M)
vendor_id: GenuineIntel
cpu family: 6
model: 58
model name: Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz
stepping: 9
cpu MHz: 2485.659
cache size: 6144 KB
fpu: yes
fpu_exception: yes
cpuid level: 5
wp: yes
如果输入字符串没有前导空格(您自己缩进示例使其看起来对齐),则只需删除制表符:str1 = str1.replace('\t', '')
把它干掉。