Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中循环的最后一次迭代中跳过逗号_Python_String - Fatal编程技术网

在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

我正在尝试用Python迭代字典。输出必须类似于某种格式,以便可以用作其他内容的输入。输入如下所示:

"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。这非常有效。