我正在从表中提取一个int,但令人惊讶的是它是一个带有多个句号的字符串。 这就是我得到的:
p = '23.4565.90'
我想删除最后一个点,但在转换为in时保留第一个点。 如果我愿意
print (p.replace('.',''))
所有点均被删除 我该怎么办。
不适用 尝试了很长的路要走
p = '88.909.90000.0'
pp = p.replace('.','')
ppp = list(''.join(pp))
ppp.insert(2, '.')
print (''.join(ppp))
但是 发现一些数字 例如170.53609.45 在这个示例中,我将得到17.05360945而不是170.5360945
答案 0 :(得分:3)
这是一个解决方案:
p = '23.4565.90'
def rreplace(s, old, new, occurrence):
li = s.rsplit(old, occurrence)
return new.join(li)
# First arg is the string
# Second arg is what you want to replace
# Third is what you want to replace it with
# Fourth is how many of them you want to replace starting from the right.
# which in our case is all but the first '.'
d = rreplace(p, '.', '', p.count('.') - 1)
print(d)
>>> 23.456590
答案 1 :(得分:2)
str.partition
呢?
p = '23.4565.90'
a, b, c = p.partition('.')
print(a + b + c.replace('.', ''))
这将打印:
23.456590
编辑:方法是partition
而不是separate
答案 2 :(得分:0)
这不是执行此操作的最佳方法,特别是如果您没有获得相似的值,但是如果您进行某种循环以检查有多少个值,则可以这样做。但是如果字符串中只有三个点,请尝试以下操作:
p = '88.909.90000.0'
p = p.split('.')
p = p[0] + '.' + p[1] + p[2]
然后如果您希望将其用作数字,请执行此操作 p = float(p)