删除python中字符串中的空格和制表符

时间:2014-02-23 09:39:40

标签: python string python-2.7

如何在python中删除字符串中的特定空格。

我的输入字符串是:,

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 str1
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

5 个答案:

答案 0 :(得分:5)

看起来你想从行的开头删除空格,并删除冒号之前的所有空格。使用正则表达式:

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', '')

并完成它。

答案 1 :(得分:2)

我不知道“随机”是什么意思,但您可以删除所有标签:

str1 = str1.replace("\t", "")

答案 2 :(得分:0)

这将解决你的答案:

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"""
arr = [line.strip() for line in str1.split('\n')]
for line in arr:
    print line.strip()

答案 3 :(得分:0)

def invitation_ics():
    text = f"""BEGIN:VCALENDAR
CLASS:PUBLIC
STATUS:CONFIRMED
    """
retunr text

out not tab

BEGIN:VCALENDAR
CLASS:PUBLIC
STATUS:CONFIRMED

答案 4 :(得分:-1)

str1 = str1.replace("\t", "").replace(" ", "")

它会首先替换标签然后替换空格。