我有一个列表,其中一些字符串以某个字符结尾。现在我需要从这些字符串中删除这个字符。
例如:['abc-','xyz','jkl-']
结果应该是['abc','xyz','jkl']
我正在尝试的是:
>>>List.append([s.replace('- ',' ')[:-1] for s in List ])
但它也会从其他字符串中删除最后一个字符。
您正试图用'- '
匹配replace
,您的字符后面跟着一个空白字符。字符串中没有空格,因此replace什么都不做,然后只将所有字符串的最后一个字符切片。此外,添加空格然后切片是没有意义的,而且您当前的方法不会考虑字符串中其他地方的字符,例如two-putt
。
只需移除切片,然后使用rstrip
移除不需要的尾随字符。
>>> l=['abc-','xyz','jkl-']
>>> l[:]= [x.rstrip('-') for x in orig]
['abc', 'xyz', 'jkl']
你可以使用列表理解来创建一个新的列表,然后只覆盖你原来的内容。请注意,使用此方法,例如,如果字符串以几个不需要的字符结尾,则它们都将被删除。CCD_ 7将变为CCD_。如果您也想处理尾随空白,可以用.rstrip('- ')
来补充一个空格以及您不想使用rstrip
的字符。
您可以使用列表理解,它考虑列表中的每个项目,对于每个项目,如果最后一个字符是破折号,则只使用除最后一个之外的所有字符:
>>> List = ['abc-', 'xyz', 'jlk-']
>>> [x[:-1] if x.endswith('-') else x for x in List]
['abc', 'xyz', 'jlk']