如何从python中的字符串中删除一些点

时间:2019-04-18 00:21:44

标签: python-3.x

我正在从表中提取一个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

3 个答案:

答案 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

贷记到How to replace all occurences except the first one?

答案 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)