2012-02-04 74 views
1

如何在python中將單詞之間的單個空格替換爲'_'?替換python中單詞之間的單個空格

例如:

輸入:

09  Web Problem  Any problem has to do with the dept. web sites 
12  SW Help   Questions about installed SW (hotline support) 

輸出:

09  Web_Problem  Any_problem_has_to_do_with_the_dept._web_sites 
12  SW_Help   Questions_about_installed_SW_(hotline_support) 

感謝!

+2

's.replace('','_')'會是答案,但是您似乎有一個要求不要在數字上加下劃線。 – hughdbrown 2012-02-04 04:47:37

+0

不,現在問題格式正確(文本中提到「單個空白區域」的事實),要求僅替換自身發生的空間(或空白區域)。換句話說,不要觸及多於一個尺寸的空白組。 – paxdiablo 2012-02-04 04:59:26

回答

0

要讀取文件,您需要使用open()函數和一個循環(一個for循環會很有意義)來讀取每一行。

要將線條分解成小塊,可以使用漂亮的字符串切片語法。有關切片的一些示例,請參閱http://docs.python.org/tutorial/introduction.html#strings

將空格替換爲_,replace方法就是你想要的。

'abc def'.replace(' ', '_') 

有關更多有用的字符串方法,請參見http://docs.python.org/library/stdtypes.html#string-methods

由於您剛剛開始使用Python,我強烈建議您閱讀以下教程:http://learnpythonthehardway.org/完成整個工作,您應該有一個堅實的基礎。

+0

對此的警告是,他需要確保數字,主題和文本之間的空間是標籤而不是空格。 – Drahkar 2012-02-04 04:52:06

+0

如果你還需要打破你的輸入文件,這開始看起來很像功課。看看open()來讀取文件和字符串切片,將每條線分開。有關切片的一些示例,請參閱http://docs.python.org/tutorial/introduction.html#strings。 – gfortune 2012-02-04 04:52:16

+0

感謝您的快速回復!當你回答我的問題時,我實際上形成了我的例子錯誤。你能再看看嗎? – Brendan0541 2012-02-04 04:52:24

1

如果你想保持那麼第一個數字和文本之間的間距:

更新時間:

import re 
match = re.match("^([0-9]+)(\ +)(.*?)(\ +\ +)(.*)",yourstring) 
output = match.group(1)+match.group(2)+match.group(3).replace(' ','_')+match.group(4)+ match.group(5).replace(' ', '_') 
2

您可以使用正則表達式來做到這一點:

>>> import re 
>>> x = '09  Web Problem  Any problem has to do with the dept. web sites' 
>>> print re.sub(r'([^\s])\s([^\s])', r'\1_\2',x) 
09  Web_Problem  Any_problem_has_to_do_with_the_dept._web_sites 

的搜索模式是(1)任何非空白字符,然後是(2)一個空白字符,然後是(3)另一個非空白字符白色空間字符。

數字1和3被捕獲,以便它們可以在替換模式中使用。數字2被忽略,我們用下劃線代替。

這會讓多空白區域單獨出現,只是將單個出現的空格字符更改爲下劃線,這正是我所想要的。

+0

這解決了我的問題!非常感謝!! – Brendan0541 2012-02-04 04:58:27

+0

並感謝您解釋正則表達式。你介意推薦一些好的網站或書籍來學習正則表達式嗎? – Brendan0541 2012-02-04 05:06:10

相關問題