我从网站获取价格格式:10.990,00这样没有意义.需要做什么才能成为10,990.00.我试过跟随,但它正在取代所有.
price = "10.990,00"
price = price.replace(',','.',1)
price = price.replace('.',',',1)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Mar*_*ers 10
在用点替换第一个逗号后,用逗号替换第一个点.str.replace()插入的第一个点不能免于被第二个str.replace()调用替换.
try:
from string import maketrans # Python 2
except ImportError:
maketrans = str.maketrans # Python 3
price = price.translate(maketrans(',.', '.,'))
Run Code Online (Sandbox Code Playgroud)
这会交换点的逗号,反之亦然,因为它遍历字符串,并且不会进行双重替换,并且启动速度非常快.
我使代码与Python 2和3兼容,其中string.maketrans()由静态str.maketrans()函数替换.
这里的例外是Python 2 unicode; 它与str.translate()Python 3中的工作原理相同,但没有maketrans工厂可以为您创建映射.您可以使用字典:
unicode_price = unicode_price.translate({u'.': u',', u',': u'.'})
Run Code Online (Sandbox Code Playgroud)
演示:
>>> try:
... from string import maketrans # Python 2
... except ImportError:
... maketrans = str.maketrans # Python 3
...
>>> price = "10.990,00"
>>> price.translate(maketrans(',.', '.,'))
'10,990.00'
Run Code Online (Sandbox Code Playgroud)