在Python中逐行读取字符串

12

我有以下字符串,它是使用tkinter生成的,然后通过textEntry.get()读取:

"
=========New Coffee Order===============
=========Bean Information===============
Type: Ethiopian
Origin: Single

=========Roaster/price==================
Steve's Beans
8.50/lb

Everyday Espresso
10.00/lb

Critical Coffee 
6.00/lb


=========End Coffee Order==============
"

我正在尝试使用fpdf生成符合格式指南的pdf文件。我的问题是:

如何告诉Python以逐行解释字符串,而不仅仅是将其解释为字符列表?

我的初始想法是告诉Python逐行读取此字符串并为每行分配值。然而,这似乎可能效率低下。有更好的方法吗?

谢谢。


for line in text.split('\n'): ... 这个怎么样? - user94559
@DavyM 这不是一个答案。这个问题没有足够的细节来回答。(如果我的评论是一个可以接受的答案,那么这个问题肯定是重复的。) - user94559
3个回答

19

str.splitlines() 方法可以将一个多行字符串转换为由单行字符串组成的列表。

摘自官方文档:

返回字符串中的行列表,按照行边界分割。该方法使用通用换行符方法来拆分行。

lines = text.splitlines()

1
@NoOrangeJuice,你可以在循环中使用for line in text.splitlines():str.splitlines()来获取文本的每一行。 - KelvinS
适用于Python3。 - JRichardsz

17

str.split('\n') 就可以解决问题:

In [135]: text.split('\n')
Out[135]: 
['"',
 '=========New Coffee Order===============',
 '=========Bean Information===============',
 'Type: Ethiopian',
 'Origin: Single',
 '',
 '=========Roaster/price==================',
 "Steve's Beans",
 '8.50/lb',
 '',
 'Everyday Espresso',
 '10.00/lb',
 '',
 'Critical Coffee ',
 '6.00/lb',
 '',
 '',
 '=========End Coffee Order==============',
 '"']

你需要做的就是迭代返回的列表,一行一行地处理:

for line in text.split('\n'):
    ...

比较 @Robᵩ 和我的解决方案:

In [137]: %timeit text.splitlines()
1000000 loops, best of 3: 1.8 µs per loop

In [138]: %timeit text.split('\n')
1000000 loops, best of 3: 1.31 µs per loop

感谢您的回答。下面的所有答案都很有帮助。这正是我想要做的,所以再次感谢您的帮助。 - Calvin Ellington

4
假设行之间用UNIX换行符分隔,并且文本存储在名为text的变量中。
lines = text.split("\n") 

将完成这项工作。然后,您可以迭代列表lines并对每行执行所需的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接