替换字符串列表元素中的字符

时间:2016-05-19 09:55:09

标签: python string list python-3.x

我有一个列表,其中一些字符串以某个字符结尾。现在我需要从这些字符串中删除此字符。

说:['abc-','xyz','jkl-']

结果应为['abc','xyz','jkl']

我正在尝试的是:

>>>List.append([s.replace('- ',' ')[:-1] for s in List ])

但它也会删除其他字符串中的最后一个字符。

2 个答案:

答案 0 :(得分:2)

您正尝试与replace匹配'- ',您的角色后跟空格字符。你的字符串中没有空格,因此替换什么都不做,然后你只需要切掉所有的字符串'最后一个角色。此外,添加空格然后将其切除是没有意义的,并且您当前的方法不会在字符串的其他位置考虑您的角色,例如two-putt

只需删除切片,然后使用rstrip删除您不想要的尾随字符。

>>> l=['abc-','xyz','jkl-']
>>> l[:]= [x.rstrip('-') for x in orig]
['abc', 'xyz', 'jkl']

您可以使用列表推导来创建新列表,然后只覆盖原始内容。请注意,使用此方法,如果您的字符串以您不想要的几个字符结尾,例如,它们都将被删除。 'dogs---'将成为'dogs'。如果您还想处理尾随空格,您可以使用rstrip补充一个空格以及您不希望.rstrip('- ')的字符。

答案 1 :(得分:0)

您可以使用列表推导来考虑列表中的每个项目以及每个项目,如果最后一个字符是短划线,则除了最后一个字符之外的所有项目:

>>> List = ['abc-', 'xyz', 'jlk-']
>>> [x[:-1] if x.endswith('-') else x for x in List]
['abc', 'xyz', 'jlk']