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

时间:2013-05-15 13:25:02

标签: python

基本上,我要求用户在控制台中输入一串文本,但字符串很长并包含许多换行符。如何获取用户的字符串并删除所有换行符以使其成为单行文本。我获取字符串的方法非常简单。

string = raw_input("Please enter string: ")

我应该从用户那里获取字符串吗?我在Mac上运行Python 2.7.4。

P.S。显然我是一个菜鸟,所以即使解决方案不是最有效的,使用最简单语法的解决方案也会受到赞赏。

9 个答案:

答案 0 :(得分:168)

如何使用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。出于同样的原因。

答案 1 :(得分:31)

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

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

答案 2 :(得分:18)

您可以拆分不带分隔符arg的字符串,这会将连续的空格视为单个分隔符(包括换行符和制表符)。然后使用空格加入:

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

答案 3 :(得分:14)

根据Xbello评论进行了更新:

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

了解更多here

答案 4 :(得分:4)

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

as

答案 5 :(得分: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'

更新: 修复多个生成冗余空格的换行符:

' '.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 '

答案 6 :(得分:2)

如果有人决定使用[1, 1, 1, 0, 0, 1] ,则应尝试使用replace而不是r'\n'

'\n'

答案 7 :(得分:0)

rstrip的问题在于,它在所有情况下都无法正常工作(因为我本人很少见)。相反,您可以使用- text = text.replace(“ \ n”,“”) 这将删除所有带有空格的新行\ n。

提前感谢您的投票。

答案 8 :(得分:0)

在Python中,经典答案为:

s = ''.join(s.splitlines())

它将字符串拆分成几行(让Python根据其自身的最佳实践进行操作)。然后,您将其合并。这里有两种可能性:

  • 用空格(' '.join())替换换行符
  • 或没有空格(''.join()