基本上,我要求用户在控制台中输入一串文本,但字符串很长并包含许多换行符。如何获取用户的字符串并删除所有换行符以使其成为单行文本。我获取字符串的方法非常简单。
string = raw_input("Please enter string: ")
我应该从用户那里获取字符串吗?我在Mac上运行Python 2.7.4。
P.S。显然我是一个菜鸟,所以即使解决方案不是最有效的,使用最简单语法的解决方案也会受到赞赏。
答案 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'
答案 3 :(得分:14)
答案 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()
)