基本上,我要求用户在控制台中输入一串文本,但字符串很长并包含许多换行符.如何获取用户的字符串并删除所有换行符以使其成为单行文本.我获取字符串的方法非常简单.
string = raw_input("Please enter string: ")
Run Code Online (Sandbox Code Playgroud)
有没有不同的方法我应该从用户那里抓取字符串?我在Mac上运行Python 2.7.4.
PS显然我是一个菜鸟,所以即使解决方案不是最有效的,使用最简单语法的解决方案也会受到赞赏.
Dar*_*mas 184
你怎么输入换行符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?'
>>>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我替换了所有空格.该字符串'\n'表示换行符.并\r代表回车(如果你在窗户上,你可能会得到这些,第二个replace将为你处理它们!).
基本上:
# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
Run Code Online (Sandbox Code Playgroud)
另请注意,调用变量是一个坏主意string,因为这会影响模块string.另一个名字我会避免,但有时会喜欢使用:file.出于同样的原因.
Kon*_*nev 35
您可以尝试使用字符串替换:
string = string.replace('\r', '').replace('\n', '')
Run Code Online (Sandbox Code Playgroud)
Sea*_*ean 21
您可以拆分不带分隔符arg的字符串,它将连续的空格视为单个分隔符(包括换行符和制表符).然后使用空格加入:
In : " ".join("\n\nsome text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/2/library/stdtypes.html#str.split
tok*_*khi 14
根据Xbello评论更新:
string = my_string.rstrip('\r\n')
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多
另一个选择是正则表达式:
>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'
Run Code Online (Sandbox Code Playgroud)
如果有人决定使用replace,你应该尝试r'\n'一下'\n'
mystring = mystring.replace(r'\n', ' ').replace(r'\r', '')
Run Code Online (Sandbox Code Playgroud)
该法服答案,在Python,应该是:
s = ''.join(s.splitlines())
Run Code Online (Sandbox Code Playgroud)
它将字符串分成几行(让 Python 根据自己的最佳实践来做)。然后你合并它。这里有两种可能:
' '.join())替换换行符''.join())| 归档时间: |
|
| 查看次数: |
323231 次 |
| 最近记录: |