我正在从网站获取价格,格式为:10.990,00,这本身没有意义。使它成为 10,990.00 需要什么。我试过跟随,但它正在替换所有内容。
price = "10.990,00"
price = price.replace(',','.',1)
price = price.replace('.',',',1)
我做错了什么?
最佳答案
首先用点替换第一个逗号后,您正在用逗号替换第一个 点。第一个 str.replace()
插入的点不能被第二个 str.replace()
调用替换。
使用 str.translate()
method相反:
try:
from string import maketrans # Python 2
except ImportError:
maketrans = str.maketrans # Python 3
price = price.translate(maketrans(',.', '.,'))
这会在遍历字符串时将逗号换成点,反之亦然,并且不会进行双重替换,并且非常快启动。
我使代码与 Python 2 和 3 兼容,其中 string.maketrans()
被static str.maketrans()
function取代.
这里的异常(exception)是 Python 2 unicode
;它与 Python 3 中的 str.translate()
工作方式相同,但没有 maketrans
工厂为您创建映射。您可以为此使用字典:
unicode_price = unicode_price.translate({u'.': u',', u',': u'.'})
演示:
>>> try:
... from string import maketrans # Python 2
... except ImportError:
... maketrans = str.maketrans # Python 3
...
>>> price = "10.990,00"
>>> price.translate(maketrans(',.', '.,'))
'10,990.00'
关于python - 如何交换字符串中的逗号和点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29036023/