如何在 windows 中更改 python 中的语言环境?
How to change locale in python in windows?
我想将整数价格格式化为正确格式化的货币。例如 10000 或 10,000 卢比
因此,我在 python
中使用以下命令
import locale
locale.setlocale(locale.LC_MONETARY, 'en_US')
or
locale.setlocale(locale.LC_MONETARY, 'en_IN')
print str(locale.currency(10000, grouping=True))
当我在不同的笔记本电脑上使用 python 和 ubuntu 中的上述命令时,它们工作得很好。但是,在 windows 上它们不起作用。
它给我的错误如下
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\locale.py", line 581, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
如何解决这个错误?
我正在使用 Windows 10. 我打开 cmd 并输入 "python" 回车。 python shell 与以下版本一起出现。在那里我输入了上面的命令。
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
注意:- 我尝试将 locale.py 文件从 ubuntu 系统的 python 目录复制到 Windows 目录,即, "C:\Python27\Lib" 但它仍然无法正常工作。
对于windows,您需要设置locale.setlocale(locale.LC_ALL, '<language string>')
https://msdn.microsoft.com/en-us/library/39cwe7zf(vs.71).aspx(已弃用)
https://msdn.microsoft.com/en-us/library/39cwe7zf(v=vs.140).aspx(已更新)。
您可以查看 pycountry 库以获得 Windows 和 Linux 语言代码之间的映射:
>>> pycountry.languages.lookup('fr')
Language(alpha_2=u'fr', alpha_3=u'fra', bibliographic=u'fre', name=u'French', scope=u'I', type=u'L')
>>> pycountry.languages.lookup('french')
Language(alpha_2=u'fr', alpha_3=u'fra', bibliographic=u'fre', name=u'French', scope=u'I', type=u'L')
>>> pycountry.languages.lookup('chinese')
Language(alpha_2=u'zh', alpha_3=u'zho', bibliographic=u'chi', name=u'Chinese', scope=u'M', type=u'L')
>>> pycountry.languages.lookup('chinese-traditional')
Traceback (most recent call last):
...
LookupError: Could not find a record for 'chinese-traditional'
那么你可以这样做:
import os
import locale
import pycountry
lang = "en_IN" # your code
language = pycountry.languages.lookup(lang)
if os.name == "posix":
locale.setlocale(locale.LC_MONETARY, language.alpha_2)
else:
locale.setlocale(locale.LC_MONETARY, language.name)
编辑
要格式化货币值,您可以考虑使用 Babel,例如:
>>> babel.numbers.format_currency(10000, 'INR', locale='en_IN')
u'\u20b9\xa010,000.00'
>>> print(babel.numbers.format_currency(10000, 'INR', locale='en_IN'))
₹ 10,000.00
对于 Python 3.6.4 我在 Windows 10
上做了以下操作
import locale
locale.setlocale(locale.LC_ALL,'enn')
>>'English_India.1252'
locale.currency(10000000.32,grouping=True,symbol=True)
>>'? 1,00,00,000.32'
locale.currency(10000000.32,grouping=True,symbol=True).replace('?','₹')
>>'₹ 1,00,00,000.32'
我想将整数价格格式化为正确格式化的货币。例如 10000 或 10,000 卢比
因此,我在 python
中使用以下命令import locale
locale.setlocale(locale.LC_MONETARY, 'en_US')
or
locale.setlocale(locale.LC_MONETARY, 'en_IN')
print str(locale.currency(10000, grouping=True))
当我在不同的笔记本电脑上使用 python 和 ubuntu 中的上述命令时,它们工作得很好。但是,在 windows 上它们不起作用。
它给我的错误如下
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\locale.py", line 581, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
如何解决这个错误?
我正在使用 Windows 10. 我打开 cmd 并输入 "python" 回车。 python shell 与以下版本一起出现。在那里我输入了上面的命令。
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
注意:- 我尝试将 locale.py 文件从 ubuntu 系统的 python 目录复制到 Windows 目录,即, "C:\Python27\Lib" 但它仍然无法正常工作。
对于windows,您需要设置locale.setlocale(locale.LC_ALL, '<language string>')
https://msdn.microsoft.com/en-us/library/39cwe7zf(vs.71).aspx(已弃用)
https://msdn.microsoft.com/en-us/library/39cwe7zf(v=vs.140).aspx(已更新)。
您可以查看 pycountry 库以获得 Windows 和 Linux 语言代码之间的映射:
>>> pycountry.languages.lookup('fr')
Language(alpha_2=u'fr', alpha_3=u'fra', bibliographic=u'fre', name=u'French', scope=u'I', type=u'L')
>>> pycountry.languages.lookup('french')
Language(alpha_2=u'fr', alpha_3=u'fra', bibliographic=u'fre', name=u'French', scope=u'I', type=u'L')
>>> pycountry.languages.lookup('chinese')
Language(alpha_2=u'zh', alpha_3=u'zho', bibliographic=u'chi', name=u'Chinese', scope=u'M', type=u'L')
>>> pycountry.languages.lookup('chinese-traditional')
Traceback (most recent call last):
...
LookupError: Could not find a record for 'chinese-traditional'
那么你可以这样做:
import os
import locale
import pycountry
lang = "en_IN" # your code
language = pycountry.languages.lookup(lang)
if os.name == "posix":
locale.setlocale(locale.LC_MONETARY, language.alpha_2)
else:
locale.setlocale(locale.LC_MONETARY, language.name)
编辑
要格式化货币值,您可以考虑使用 Babel,例如:
>>> babel.numbers.format_currency(10000, 'INR', locale='en_IN')
u'\u20b9\xa010,000.00'
>>> print(babel.numbers.format_currency(10000, 'INR', locale='en_IN'))
₹ 10,000.00
对于 Python 3.6.4 我在 Windows 10
上做了以下操作import locale
locale.setlocale(locale.LC_ALL,'enn')
>>'English_India.1252'
locale.currency(10000000.32,grouping=True,symbol=True)
>>'? 1,00,00,000.32'
locale.currency(10000000.32,grouping=True,symbol=True).replace('?','₹')
>>'₹ 1,00,00,000.32'