2014-02-23 59 views
0

如何刪除python中的字符串中的特定空白字符。刪除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 
+1

你確定你的輸出字符串沒有任何空間了。 –

+1

我編輯了你的示例a)是有效的Python,b)用'\ t'字符替換它中現有的選項卡,因爲這是重要的,但是不可見。如果可以的話,請使用'print repr(str1)'向我們展示*真正*的內容。 –

回答

2

我不知道你所說的「隨機」的意思,但你可以刪除所有卡口與:

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

如果':'字符前面的前導空格或空格也包含常規空格,那麼這裏還不夠。 –

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

,它將代替標籤首先是空白。

+1

這將全部**空白替換爲空白。應該保留結腸之後和單詞之間的空格。 –

4

看起來像要從行首開始刪除空格,並刪除冒號前的所有空格。使用正則表達式:

import re 

re.sub(r'(^[ \t]+|[ \t]+(?=:))', '', str1, flags=re.M) 

該挑選出的空格和tab在行的開始(^[ \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', '') 

並且完成它。

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()