删除字符串中的最后一个字符(Python)

2024-05-31 13:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含字符串对象的列表。如果字符串对象以W结尾,我想从字符串中删除W。另外,在字符串等于UW的唯一情况下,我不想删除W

我试过这个:

masterAbrevs = []

for subject in masterAbrevs:
    if subject.endswith("W"):
        subject =  subject[:-1]

打印masterAbrevs之后,我的代码似乎什么也没做。请帮忙。


Tags: 对象字符串代码in列表forif结尾
3条回答

我想你可能会喜欢一个更像Python的回答:

masterAbrevs = ['aksdjfW', 'adW', 'UW', 'tttttW']
masterAbrevs = [abrev[:-1] if (abrev.endswith("W") and abrev != "UW") else abrev for abrev in masterAbrevs]

你需要利用这里的enumerate()

masterAbrevs = ['aksdjfW', 'adW', 'UW', 'tttttW']

for ind, subject in enumerate(masterAbrevs):
    if subject.endswith("W") and subject[-2] != 'U':
        masterAbrevs[ind] = subject[:-1]

print masterAbrevs
# ['aksdjf', 'ad', 'UW', 'ttttt']

问题是,您从未对列表中的元素进行过更改;您正在对保存从列表返回的元素的变量进行更改。

请改为:

masterAbrevs = ['ASW', 'AS', 'UW']

for i, e in enumerate(masterAbrevs):
    if (e[-1] == 'W') and (e != 'UW'):
        masterAbrevs[i] = masterAbrevs[i][:-1]

# results in ['AS', 'AS', 'UW']

相关问题 更多 >