我有一个列表,其中一些字符串以某个字符结尾。现在我需要从这些字符串中删除此字符。
说:['abc-','xyz','jkl-']
结果应为['abc','xyz','jkl']
我正在尝试的是:
>>>List.append([s.replace('- ',' ')[:-1] for s in List ])
但它也会删除其他字符串中的最后一个字符。
答案 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']