Skip to main content
 首页 » 编程设计

python之如何交换字符串中的逗号和点

2025年05月04日12shihaiming

我正在从网站获取价格,格式为: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'