使用Python 字符串 `replace` 遇到的小问题

本文介绍了一个关于Python字符串替换的问题及解决方法。作者在尝试替换一个包含多个特定子字符串的长字符串时遇到了类型错误。通过逐步排查,最终发现是由于一个特别长的数字字符串导致的问题,并找到了正确的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Python 字符串 replace 遇到的小问题

场景:需要replace一串字符串中的8个地方,使用8次replace方法。

报错信息:

TypeError: expected a string or other character buffer object

我本以为是使用replace过多次导致的某些地方不兼容。比如原本字符串中找到多个需要匹配的项,可是我没给够待替换的项这种情况。code1

s = s = ['xxx','xx','xxx','xx','33554111720048','xx','xxxx','xxx.cn']

ht = data.replace('0000',s[0]).replace('1111',s[1]).replace('2222',s[2]).replace('3333',s[3]).replace('4444',s[4]).replace('5555',s[5]).replace('6666',s[6]).replace('7777',s[7])

注意到s[4]是个很长的数字,我本以为这种series的type都是object,既没有去管。尝试code2

ht = dict()
for i in range(8):
    if i == 0:
        ht[i] = data.replace('l%d%d%d'%(i,i,i),s[i])
    else:
        ht[i] = ht[i-1].replace('l%d%d%d'%(i,i,i),s[i])

这样最后`ht[7]就是我想要的,然而还是一个报错信息。

解决办法

(这是数字过长写不进去引起的?)
code1中的replace("4444",str(s[4]))即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值