在python中,是否有内置的方法在字符串上执行readline()?我有大量的数据,并且想要剥离第一对没有在整个字符串上执行split()的几行.
假设的例子:
def handleMessage(msg):
headerTo = msg.readline()
headerFrom= msg.readline()
sendMessage(headerTo,headerFrom,msg)
msg = "Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n"
handleMessage(msg)
Run Code Online (Sandbox Code Playgroud)
我希望这导致:
sendMessage("Bob Smith", "Jane Doe", "Jane,\nPlease order...")
我知道编写一个这样做的类会很容易,但是如果可能的话,我正在寻找内置的东西.
编辑:Python v2.7
jte*_*ace 69
您可以使用StringIO:
>>> msg = "Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n"
>>> msg
'Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n'
>>> import StringIO
>>> buf = StringIO.StringIO(msg)
>>> buf.readline()
'Bob Smith\n'
>>> buf.readline()
'Jane Doe\n'
Run Code Online (Sandbox Code Playgroud)
如果性能很重要,请务必使用cStringIO.
你可以使用io.StringIO:
>>> import io
>>> buf = io.StringIO(msg)
>>> buf.readline()
'Bob Smith\n'
>>> buf.readline()
'Jane Doe\n'
>>> len(buf.read())
44
Run Code Online (Sandbox Code Playgroud)
Amb*_*ber 22
为什么不只是根据需要进行多次分割呢?由于您正在使用所有生成的部分(包括字符串的其余部分),将其加载到其他缓冲区对象然后再次将其读回可能会更慢,而不是更快(加上函数调用的开销) .
如果你想把第一N行分开,那就行了.split("\n", N).
>>> foo = "ABC\nDEF\nGHI\nJKL"
>>> foo.split("\n", 1)
['ABC', 'DEF\nGHI\nJKL']
>>> foo.split("\n", 2)
['ABC', 'DEF', 'GHI\nJKL']
Run Code Online (Sandbox Code Playgroud)
所以对你的功能:
def handleMessage(msg):
headerTo, headerFrom, msg = msg.split("\n", 2)
sendMessage(headerTo,headerFrom,msg)
Run Code Online (Sandbox Code Playgroud)
或者如果你真的想要得到幻想:
# either...
def handleMessage(msg):
sendMessage(*msg.split("\n", 2))
# or just...
handleMessage = lambda msg: sendMessage(*msg.split("\n", 2))
Run Code Online (Sandbox Code Playgroud)
小智 13
python 2和3最简单的方法是使用string的方法splitlines().这将返回一个行列表.
>>> "some\nmultilene\nstring\n".splitlines()
Run Code Online (Sandbox Code Playgroud)
['some','multilene','string']
像StringIO那样做:
i = self.buf.find('\n', self.pos)
Run Code Online (Sandbox Code Playgroud)
所以这意味着:
pos = msg.find("\n")
first_line = msg[:pos]
...
Run Code Online (Sandbox Code Playgroud)
看起来比使用整个StringIO更优雅......
| 归档时间: |
|
| 查看次数: |
83292 次 |
| 最近记录: |