2012-02-04 95 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

相关问题