为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2023-04-18 16:31:13
coins = ['big-coin-','coins','bitcoin']for coin in coins:    if coin.endswith('-'):        coin = coin.replace('-','')        print(coin)    print(coins)更换不起作用?我想要 big-coin- 替换为 big-coin。谢谢你!
查看完整描述

4 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

这使用列表理解通过从旧列表中存在的每个字符串中删除所有尾随来创建新列表。-

coins = [coin.rstrip('-') for coin in coins]


查看完整回答
反对 回复 2023-04-18
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

字符串是不可变的。当您这样做时coin = coin.replace(),原始文件coin不会被修改。coin.replace()相反,您会得到一个新的字符串,它是用 name 存储的结果coin。如果你不把它写到coin你的列表中,它就不会出现在你的列表中。


你需要做的是:


for coin, index in enumerate(coins):

    if coin.endswith('-'):

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

        coins[index] = coin


print(coins)

if或者,如果您这样做,您可以删除该声明


for coin, index in enumerate(coins):

    coin = coin.rstrip('-')

    coins[index] = coin


print(coins)

正如您从 Vishal 的回答中看到的那样,这个循环可以缩短为列表理解


coins = [coin.rstrip('-') for coin in coins]


查看完整回答
反对 回复 2023-04-18
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

使用 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]


查看完整回答
反对 回复 2023-04-18
?
慕仙森

TA贡献1827条经验 获得超7个赞

按预期替换工作,将所有“-”符号替换为空符号。如果您只需要替换结尾的一个,您应该使用以下代码:


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)


查看完整回答
反对 回复 2023-04-18
  • 4 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信