python - 创建多行的子字符串列表

标签 python list-comprehension

假设我有以下列表:

result_lines = ['name1 age1 address1 email1',
                'name2 age2 address2 email2',
                'name3 age3 address3 email3']

我想打印以下字符串:

'age1:name1, age2:name2, age3: name3'

注意:字符串末尾不要有,!

更新:重要的不是 age1:name1 的顺序。它也可以是 age1:email1:name1

到目前为止我尝试了什么:

print "".join((l.split(' ')[1], l.split(' ')[0]) for l in result_lines) 

但是,我收到以下错误消息:

TypeError: sequence item 0: expected string, tuple found

感谢您的帮助。

最佳答案

str.format()是你的 friend ,你想要呈现 listtuple 的内容:

>>> ', '.join(['{1}:{0}'.format(*line.split()) for line in result_lines])
'age1:name1, age2:name2, age3:name3'

稍微分解一下,因为该行中发生了很多事情......

我们从简单的列表理解开始:

>>> [line for line in result_lines]
['name1 age1 address1 email1', 'name2 age2 address2 email2', 'name3 age3 address3 email3']

然后使用 str.split() 将字符串拆分为空格(我们只需要拆分一次):

>>> [line.split() for line in result_lines]
[['name1', 'age1', 'address1', 'email1'], ['name2', 'age2', 'address2', 'email2'], ['name3', 'age3', 'address3', 'email3']]

介绍str.format()unpack the argument list :

>>> ['{0}:{1}:{2}:{3}'.format(*line.split()) for line in result_lines]
['name1:age1:address1:email1', 'name2:age2:address2:email2', 'name3:age3:address3:email3']

选择我们想要的元素:

>>> ['{1}:{0}'.format(*line.split()) for line in result_lines]
['age1:name1', 'age2:name2', 'age3:name3']

(str.) join这一切与 ', ':

>>> ', '.join(['{1}:{0}'.format(*line.split()) for line in result_lines])
'age1:name1, age2:name2, age3:name3'

Q.E.D.

关于python - 创建多行的子字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14935939/

相关文章:

Python装饰器自动定义__init__变量

python - 如何按位于字典深处的键对复杂字典进行排序?

python - 使用 Python 在 json 模式中完全扩展 $ref 引用

Python - 列表理解如何一次插入 2 个元素?

python - 如何在一行中编写一个for循环和多个if语句?

python - 列表理解拆分循环变量

python - 将字符串解压为一个/两个变量

python - 如何将文本文件读入文本框?

python - 基于选择的列表理解

python - 来自 Python 调试器的列表理解范围错误