在python中逐行读取字符串

时间:2017-07-07 20:58:47

标签: python string

我使用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逐行读取这个字符串并为每行分配值。然而,这似乎效率低下,有没有更好的方法来做到这一点?

谢谢。

3 个答案:

答案 0 :(得分:10)

str.splitlines()将单个多行字符串转换为单行字符串列表。

引用文档:

  

返回字符串中的行列表,在行边界处断开。此方法使用通用换行方法来分割线。

lines = text.splitlines()

答案 1 :(得分:9)

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

答案 2 :(得分:3)

假设行由UNIX换行符分隔,并且文本位于名为text

的变量中
lines = text.split("\n") 

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