当前位置:  开发笔记 > 编程语言 > 正文

删除列表项单词后面的逗号

如何解决《删除列表项单词后面的逗号》经验,为你挑选了1个好方法。

这是我的Python代码(我使用的是Python 2.7.6):

cn = ['here,', 'there']
>>> for c in cn:
    if c.endswith(','):
        c = c[:-1]

>>> print(cn)
['here,', 'there']

正如你所看到的,cn[0]即使我这样做,仍然有逗号c = c[:-1].如何在没有尾随逗号的情况下进行更改cn[0]以使其等于'here'



1> wastl..:

问题是您为新列值分配c但不更新列表.为了操作列表,您需要执行以下操作:

cn = ['here,', 'there']
for index, c in enumerate(cn):
    if c.endswith(','):
        cn[index] = c[:-1]

print(cn)
['here', 'there']

Enumerate为您提供列表中的所有元素及其索引,然后,如果字符串具有尾随逗号,则只需更新列表元素和正确的索引.

你的代码的问题在于c它只是持有字符串'here,'.然后你用逗号创建了一个新的字符串并将其分配给了c,这不会影响列表cn.为了对列表产生任何影响,您需要在所需位置设置新值.

您还可以使用列表推导来获得相同的结果,这对于如此小的任务可能更具pythonic :(如@AdamSmith所述)

cn = [c[:-1] if c.endswith(',') else c for c in cn]

这样做会创建一个新的列表,cn如果它没有结束,每个元素的返回值都会保持不变,,否则在返回字符串之前会删除逗号.

您可以使用的另一件事是内置rstrip函数,但它会删除所有试用逗号,而不仅仅是一个.它看起来像这样(再次@AdamSmith指出这一点):

cn = map(lambda x: x.rstrip(','), cn)

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有