从文本的长字符串中删除所有换行符

问题描述 投票:104回答:7

基本上,我要求用户输入文本字符串到控制台,但是字符串很长,包括许多换行符。我怎么会拿用户的字符串,并删除所有换行符,使其文本的单行。我获取字符串的方法很简单。

string = raw_input("Please enter string: ")

是否有不同的方式,我应该抓住来自用户的字符串?我在Mac上运行的Python 2.7.4。

附:显然,我是小白,所以即使一个解决方案是不是最有效的,使用最简单的语法的一个,将不胜感激。

python
7个回答
182
投票

你如何进入换行符与raw_input?但是,一旦你与它的一些字符的字符串,你想摆脱的,只是他们replace

>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>

在上面的例子中,我更换了所有的空间。字符串'\n'代表换行符。而\r代表回车(如果你使用的是Windows,你可能会得到这些和第二replace将处理它们为你!)。

基本上:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')

还要注意,这是一个坏主意,打电话给你的变量string,因为这屏蔽了该模块string。另一个名字我想避免的,但很想有时使用:file。出于同样的原因。


33
投票

您可以尝试使用字符串替换:

string = string.replace('\r', '').replace('\n', '')

21
投票

您可以分割,没有分离阿根廷,这将将连续的空格作为一个分隔符(包括换行和制表符)的字符串。然后加入使用空间:

In : " ".join("\n\nsome    text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'

https://docs.python.org/2/library/stdtypes.html#str.split


14
投票

基于Xbello评论更新:

string = my_string.rstrip('\r\n')

阅读更多here


5
投票

另一种选择是正则表达式:

>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'

3
投票

一种方法,考虑到

  • 额外的白色字符在字符串的开始/结束
  • 附加白色字符在每个行的开始/结束
  • 各种最终行的字符

它需要这样其可以是杂乱的例如多行字符串

test_str = '\nhej ho \n aaa\r\n   a\n '

并产生很好的一个线串

>>> ' '.join([line.strip() for line in test_str.strip().splitlines()])
'hej ho aaa a'

UPDATE:要解决多换行字符产生多余的空格:

' '.join([line.strip() for line in test_str.strip().splitlines() if line.strip()])

这适用于以下几种太test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '


1
投票

与rstrip的问题是,它并不适用于所有情况(因为我自己已经看到了一些)。相反,你可以使用 - 文本= text.replace(“\ n”,”“),这将删除所有新行\ n,其中的空间。

在此先感谢你们为您的upvotes。

© www.soinside.com 2019 - 2024. All rights reserved.