猿问

我如何删除列表中的破折号,仅当它位于行尾时

coins = ['big-coin-','coins','bitcoin']


for coin in coins:

    if coin.endswith('-'):

        coin = coin.replace('-','')

        print(coin)


    print(coins)

更换不起作用?我想要 big-coin- 替换为 big-coin。谢谢你!


森栏
浏览 132回答 4
4回答

慕丝7291255

这使用列表理解通过从旧列表中存在的每个字符串中删除所有尾随来创建新列表。-coins = [coin.rstrip('-') for coin in coins]

慕虎7371278

字符串是不可变的。当您这样做时coin = coin.replace(),原始文件coin不会被修改。coin.replace()相反,您会得到一个新的字符串,它是用 name 存储的结果coin。如果你不把它写到coin你的列表中,它就不会出现在你的列表中。你需要做的是:for coin, index in enumerate(coins):    if coin.endswith('-'):        coin = coin.replace('-', '')        coins[index] = coinprint(coins)if或者,如果您这样做,您可以删除该声明for coin, index in enumerate(coins):    coin = coin.rstrip('-')    coins[index] = coinprint(coins)正如您从 Vishal 的回答中看到的那样,这个循环可以缩短为列表理解coins = [coin.rstrip('-') for coin in coins]

芜湖不芜

使用 replace 将删除它找到的第一个“-”。但由于您已经知道最后一个字符是破折号:if coin.endswith("-"):    coin = coin[:-1]或者您认为要删除的尾部破折号可能不止一个:while coin.endswith("-"):     coin = coin[:-1]编辑:注意coin = coin[:-1]不会改变coins。您将需要创建一个新列表或修复您现有的列表:for i in range(len(coins)]:     coin[i] = coin[i][:-1]

慕仙森

按预期替换工作,将所有“-”符号替换为空符号。如果您只需要替换结尾的一个,您应该使用以下代码:if coin.endswith('-'):    coin = coin[:-1]如果你需要在没有列表理解的情况下就地替换,你应该像下面这样:coins = ['big-coin-','coins','bitcoin']for i in range(len(coins)):    if coins[i].endswith('-'):        coins[i] = coins[i][:-1]print(coins)但最好的解决方案是使用列表理解coins = ['big-coin-','coins','bitcoin']coins = [coin[:-1] if coin.endswith('-') else coin for coin in coins]print(coins)
随时随地看视频慕课网APP

相关分类

Python
我要回答