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

Python 删除长文本字符串中的所有换行符,python,Python,基本上,我要求用户在控制台中输入一个文本字符串,但该字符串很长,包含许多换行符。如何获取用户的字符串并删除所有换行符以使其成为一行文本。我获取字符串的方法非常简单 string = raw_input("Please enter string: ") 是否有其他方法可以从用户那里获取字符串?我正在Mac上运行Python 2.7.4 另外,很明显我是一个noob,所以即使解决方案不是最有效的,使用最简单语法的解决方案也会受到欢迎。您可以尝试使用字符串替换: string = string.re

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

string = raw_input("Please enter string: ")
是否有其他方法可以从用户那里获取字符串?我正在Mac上运行Python 2.7.4


另外,很明显我是一个noob,所以即使解决方案不是最有效的,使用最简单语法的解决方案也会受到欢迎。

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

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

如何使用
raw_input
输入换行符?但是,一旦你有了一个字符串,其中包含了一些你想去掉的字符,只要替换它们就行了

>>> 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上,您可能会得到这些,第二个
替换
将为您处理!)

基本上:

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

另外请注意,调用变量
string
,这是一个坏主意,因为这会使模块
string
变得模糊。另一个我想避免但有时很想使用的名字:
file
。出于同样的原因。

根据
Xbello
注释更新:

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

阅读更多内容

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

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

一种考虑

  • 字符串开头/结尾的其他白色字符
  • 在每行的开始/结束处添加白色字符
  • 各种结束行字符
它需要这样一个多行的字符串,它可能是混乱的,例如

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\u str='\nhej ho\n aaa\r\n\n\n\n a\n'

另一个选项是正则表达式:

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

rstrip的问题在于它并非在所有情况下都能工作(我自己也很少看到)。相反,你可以使用- text=text。替换(“\n”和“”) 这将删除所有带有空格的新行


提前感谢各位的投票。

如果有人决定使用
替换
,您应该尝试
r'\n'
而不是
'\n'

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

Python中的标准答案是:

s=''.join(s.splitlines())
它将字符串拆分为行(让Python根据自己的最佳实践来执行)。然后你合并它。这里有两种可能性:

  • 将换行符替换为空白(
    '.join()
  • 或者不带空格(
    '.join()

@NicYoung,这是相似但不同的<代码>条带
删除字符串开头和结尾处的空白,而不是字符串内部的空白…工作完美,很抱歉这个愚蠢的问题!我最初的解决方案是列出字符串并查找\n的所有实例,但由于列表中每个列表项只有1个字符,搜索一直返回false,因为它将在同一列表项中找到\n或n,但不能同时找到两者。这个答案对我很有帮助,因为它提到了
\r
回车符。我尝试了所有方法来删除
\n
,但仍然没有捕获
\r
字符。这通常为我完成任务-string.replace('\r\n','')。对于新行,大多数日志/文本编辑器文件都倾向于采用这种格式。您指出,不使用变量名
字符串
,但是出于类似的原因,您不想使用变量名
str
@information\u interchange这种方法适用于具有
\n
但不具有
\r\n
的Linux文件。我刚刚被这一点咬了一口。如果指定rstrip的\n值,\r将失败。如果不指定任何内容,则会修剪空格、\t以及其他空格。您必须使用
rstrip(“\r\n”)
有一个字符串,其中只有
rstrip('\r\n')
是不够的,必须使用:
my\u string.rstrip('\r\n')。replace('\n','')
我对一些文本有问题。我尝试使用rstrip(),但没有成功。我使用REST()。这不能处理字符串中间的连续行提要的情况。两个换行符在输出中产生两个连续的空格。请尝试“test_str='\nhej ho\n aaa\r\n\n a\n'”。有关如何匹配连续换行符的更多信息将很好
r'[\n\r]+'
甚至
r'\s+'
以单空格替换任何空格。非常好的ide,因为它还规范化制表符、双空格等+1为什么?我模模糊糊地记得为什么这是个好主意,但我们需要把它记录下来。从DB2获取HTML代码。从HTML3获取所需的文本。从文本4中删除所有换行符。在电子表格文档中插入编辑过的文本,它无法正常工作,除非我使用了
r
(“原始字符串文字”)。不幸的是,我不知道为什么)注意
r'\r'
将匹配文字“反斜杠r”--而不是“回车”字符。根据您输入的数据使用其中一个。它应该是可接受的答案。它也是独立于操作系统的