我已经搜索过了,但找不到任何有帮助的东西(可能是它不存在(
我正在寻找的是一种将STRING转换为VALUE的方法,它将自动处理不同的变体。
例如
- 从:
"111,111.56"
到111111.56
- 从
123.34.45
到12334.45
- 从
123.34,45
到12334.45
- 可以有多个分隔符
1.2.3.34,45
、1,2,3.34,45
、1,2.3.34,45
、1.2,3.34,45
在这个例子中,真正需要做的就是删除任何,
或.
并保留最后一个(如果最后一个是,
,则用.
替换它(
-
发件人:
1.2.3.34,45
- 收件人:
12334,45
- 收件人:
12334.45
- 收件人:
-
发件人:
1.2.3.34.45
- 收件人:
12334.45
- 收件人:
我知道它可以通过一个简单的.replace()
函数来解决,但我只是觉得也许没有必要重新发明一个轮子,而且已经存在了一些非常聪明的东西。
如果不可能并且唯一的方法是使用.replace()
函数。。。悲哀的但一切都很好:(这更多的是关于。。。尝试使用最佳实践。。。
潜在想法:
x= "1.2,3.34,45"
xl = list(x)
a = "".join(["".join([i for i in xl[0:-3] if i not in [".",","]]),"".join(xl[-3:]).replace(",",".")]) if xl[-3] in [".",","] else "".join(xl)
print(a)
我不认为有一种标准的方法可以实现您想要的。
然而,这个功能可以完成任务:
>>> def convert(value):
... comma = ","
... dot = "."
... last_comma_index = value.rfind(comma)
... last_dot_index = value.rfind(dot)
... if last_comma_index > last_dot_index:
... last_index = last_comma_index
... else:
... last_index = last_dot_index
... before_point = value[:last_index]
... no_commas = "".join(before_point.split(comma))
... no_dots = "".join(no_commas.split(dot))
... return no_dots + dot + value[last_index + 1:]
...
>>> convert("1.2.3.34,45")
'12334.45'
>>> convert("1.2,3.34,45")
'12334.45'
>>> convert("1,2.3.34,45")
'12334.45'
>>> convert("1,2,3.34,45")
'12334.45'