我想从列表中读取
data= ['hello','world','# ignorethis','xlable: somethingx','ylable: somethingy']
我的目标:
'hello'
提供给x
,将'world'
提供给y
,就像这样。#
忽略字符串。somethingx
读取为变量z
而非'xlable: somethingx'
。答案 0 :(得分:3)
使用列表理解:
>>> data= ['hello','world','# ignorethis','xlable: somethingx','ylable: somethingy']
>>> x, y, z = [item.split(':')[-1].strip() for item in data
if not item.startswith('#')][:3]
>>> x
'hello'
>>> y
'world'
>>> z
'somethingx'
<强>解释强>
item.startswith('#')
过滤以'#'
开头的项目。如果您想在字符串中的任意位置检查'#'
,请使用if '#' not in item
。
item.split(':')
将字符串拆分为':'
并返回一个列表:
示例:强>
>>> 'xlable: somethingx'.split(':')
['xlable', ' somethingx']
>>> 'hello'.split(':')
['hello']
在Python3中你也可以这样做:
x, y, z, *rest = [item.split(':')[-1].strip() for item in data
if not item.startswith('#')]