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



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

例如:['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']

相关内容

  • 没有找到相关文章

最新更新