54
my_string = """This is my first line,
this is my second line, and...

...this is my fourth line!"""

如何将该 ( This is my first line,) 的第一行存储到单独的字符串中?我试图.readline()从另一个类似的问题中使用,但是我收到了这个错误:

AttributeError: 'str' object has no attribute 'readline'

4

3 回答 3

134

用于str.partition()在换行符上拆分字符串,并从结果中获取第一项:

my_string.partition('\n')[0]

如果您只需要在单个位置拆分字符串,这是最有效的方法。你也可以使用str.split()

my_string.split('\n', 1)[0]

然后你需要告诉该方法只在第一个换行符上拆分一次,因为我们丢弃了其余的。

或者您可以使用以下.splitlines()方法

my_string.splitlines()[0]

但这必须为输入字符串中的每个换行符创建单独的字符串,因此效率不高。

于 2012-08-06T17:46:25.320 回答
5

readline 与流结合使用。如果您坚持使用 readline,则可以使用 StringIO:

from StringIO import StringIO

sio = StringIO(my_string)
for sline in sio.readlines():
    print sline

我会做

 for line in my_string.split('\n'):
        print line

或者做

import re
for line in re.split('\n', my_string):
    print line
于 2012-08-06T17:53:40.453 回答
1

您可以使用split()

my_string = """This is my first line,
this is my second line, and...

...this is my fourth line!"""

lines = my_string.split('\n')
于 2012-08-06T17:47:47.670 回答