替换python中单词之间的单个空格

时间:2012-02-04 04:43:26

标签: python regex replace

如何将单词之间的单个空格替换为' _'在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)

谢谢!

3 个答案:

答案 0 :(得分: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被忽略,我们改为使用下划线。

这样就可以单独留下多个白色空间区域,只需将单个出现的空白字符更改为下划线,这就是我认为你要求的。

答案 1 :(得分: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 :(得分: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/完成整个工作,您应该有一个坚实的基础来构建。