在Python中循环的最后一次迭代中跳过逗号
我正在尝试用Python迭代字典。输出必须类似于某种格式,以便可以用作其他内容的输入。输入如下所示:在Python中循环的最后一次迭代中跳过逗号,python,string,Python,String,我正在尝试用Python迭代字典。输出必须类似于某种格式,以便可以用作其他内容的输入。输入如下所示: "ok":"1", "invalid", "0", "unknown", "4", ... 输出应如下所示: operation,ok=1,invalid=0,unknown=4,... 我非常接近使用for循环实现它,但我了解到使用Python中的.join()可以非常轻松地实现这一点。这是我现在的代码: output_str = 'operation,' for key, val in
"ok":"1",
"invalid", "0",
"unknown", "4",
...
输出应如下所示:
operation,ok=1,invalid=0,unknown=4,...
我非常接近使用for循环实现它,但我了解到使用Python中的.join()
可以非常轻松地实现这一点。这是我现在的代码:
output_str = 'operation,'
for key, val in events.items():
output_str += '{0}={1},'.format(key, val)
print output_str
我可以使用
.join
?我读到join允许我跳过上一次迭代中的逗号。我只是不知道如何在“操作”之前加上字符串,如果我这样做的话。你要找的函数是str.rstrip()
它需要一个字符列表才能删除,这样您就可以
output_str = output_str.rstrip(',')
但是Willem Van Onsem建议的解决方案更好,因为它从一开始就避免了这个问题。您正在寻找的函数是
str.rstrip()
它需要一个字符列表才能删除,这样您就可以
output_str = output_str.rstrip(',')
但是Willem Van Onsem建议的解决方案更好,因为它从一开始就避免了这个问题。您确实可以在此处使用
str.join
函数将不同的元素连接在一起:
output_str = 'operation,'
output_str += ','.join('{0}={1}'.format(key,val) for key,val in events.items())
output_str='操作,'
output_str+=','.join('{0}={1}'。在events.items()中设置key,val的格式(key,val)
或者把它放在一个衬垫里(甚至把它缩短):
output_str='operation',+','.join('{0}={1}'。事件中tup的格式(*tup.items())
这是如何工作的?如中所述,str.join
接受str
的iterable
字符串,并用分隔符将它们连接在一起(此处为,'
)。因此,.join(['foo','bar','qux'])生成'foo,bar,qux'
现在我们使用发电机。对于events.items()
中的key,value
对,我们用'{0}={1}'。格式(key,val)
构造一个字符串。因此,如果key='ok'
和val='1'
,则{0}={1}'。格式(key,val)
将生成ok=1
。现在我们把所有这些结合在一起
由于
str.join
没有添加尾随分离器,因此它符合您问题的规格join
通常也会优于字符串连接(在循环中)。您确实可以在此处使用str.join
函数将不同的元素连接在一起:
output_str = 'operation,'
output_str += ','.join('{0}={1}'.format(key,val) for key,val in events.items())
output_str='操作,'
output_str+=','.join('{0}={1}'。在events.items()中设置key,val的格式(key,val)
或者把它放在一个衬垫里(甚至把它缩短):
output_str='operation',+','.join('{0}={1}'。事件中tup的格式(*tup.items())
这是如何工作的?如中所述,str.join
接受str
的iterable
字符串,并用分隔符将它们连接在一起(此处为,'
)。因此,.join(['foo','bar','qux'])生成'foo,bar,qux'
现在我们使用发电机。对于events.items()
中的key,value
对,我们用'{0}={1}'。格式(key,val)
构造一个字符串。因此,如果key='ok'
和val='1'
,则{0}={1}'。格式(key,val)
将生成ok=1
。现在我们把所有这些结合在一起
由于
str.join
没有添加尾随分离器,因此它符合您问题的规格<代码>连接通常也比字符串连接(在循环中)更有效。只需使用输出_str+=','.join({0}={1})。事件中的key,val的格式(key,val)。items())
来替换整个循环…你在那里丢了一个'where,Willem!编辑:好的,现在开始!我认为你的评论是一个合适的答案,所以你应该把它作为一个答案发布。@WillemVanOnsem你应该写一个简短的解释作为答案。这正是OP所要求和需要的。谢谢你@WillemVanOnsem。这非常有效。只需使用output_str+=','.join({0}={1})。在events.items()中为key,val设置格式(key,val)
即可替换整个for
循环…您在那里掉了一个'where,Willem!编辑:好的,现在开始!我认为你的评论是一个合适的答案,所以你应该把它作为一个答案发布。@WillemVanOnsem你应该写一个简短的解释作为答案。这正是OP所要求和需要的。谢谢你@WillemVanOnsem。这非常有效。