Rom*_*mez 7 python-3.x aws-lambda amazon-ami
我在 python 中有一个小脚本,它利用语言环境来格式化从 1.000,00 到 1,000.00 的数字
import re, locale
locale.setlocale(locale.LC_ALL, 'es_PE.UTF-8')
locale.atof(number)
Run Code Online (Sandbox Code Playgroud)
然后当我在 Lambda 中运行它时,我收到以下错误消息:
不支持的区域设置
我知道如何通过在终端中执行以下命令在我的 PC 中安装依赖项:
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
要确定可用区域设置的列表,请参阅https://phrase.com/blog/posts/beginners-guide-to-locale-in-python/
for lang in locale.locale_alias.values():
print(lang)
Run Code Online (Sandbox Code Playgroud)
您将无法在默认的 AWS Lambda Python 运行时环境中“安装”任何内容,并且设置自定义运行时可能会带来更多麻烦。您可以看看是否还有其他可以使用的东西。
如果您确实只是将 1.000,00 转换为 1,000.00,我建议您只运行自己的字符替换。一个简单的字符检查循环不会比它慢任何atof并且副作用也更少。
如果您对如何atof工作感到好奇,可以在https://github.com/python/cpython/blob/3.10/Lib/locale.py#L336中跟踪它的源代码跟踪
如果您不想使用自己的角色替换,您可以使用format自定义的format_spec.
>>> '{:,.2f}'.format(10000)
'10,000.00'
Run Code Online (Sandbox Code Playgroud)
下一行几乎遵循与 中相同的步骤atof。通过替换进行离域然后浮动。
>>> '{:,.2f}'.format(float('10.000,00'.replace('.','').replace(',','.')))
'10,000.00'
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/3/library/functions.html#format https://docs.python.org/3/library/string.html#formatspec
如果您确实想自定义 lambda 运行时,请参阅以下内容:
https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html https:// docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |