小编mot*_*oth的帖子

为什么这个土耳其字符在我小写时会被破坏?

我试图将包含土耳其语字符的单词转换为小写.

从utf-8编码的文件中读取单词:

with open(filepath,'r', encoding='utf8') as f:
            text=f.read().lower()
Run Code Online (Sandbox Code Playgroud)

当我尝试转换为小写时,土耳其语字符gets被破坏.但是,当我尝试转换为大写时,它工作正常.

这是示例代码:

str = '??birli?i'
print(str)
print(str.lower())
Run Code Online (Sandbox Code Playgroud)

以下是它在损坏时的外观:

这就是它被破坏时的样子

这里发生了什么?

一些可能有用的信息:

  • 我正在使用Windows 10 cmd提示符
  • Python版本3.6.0
  • chcp设置为65001

python turkish utf-8 case-sensitive character-encoding

3
推荐指数
1
解决办法
640
查看次数

如何从Jinja2模板获取所有未定义的变量?

我试图从Jinja2模板中获取所有未定义的变量。假设我有如下模板。

tmpstr = """
{% for row in csv %}
sample {{row.field1}} stuff {{row.field2}} morestuff {{row.field3}}
{% endfor %}
"""
Run Code Online (Sandbox Code Playgroud)

然后输入字典如下

cxt = {'csv': [
    {'field3': 1234, 'field4': 12314},
    {'field3': 2222, 'field4': 1213}
]}
Run Code Online (Sandbox Code Playgroud)

这是我尝试渲染它的方式。

env = Environment(undefined=Undefined)
tmp = env.from_string(tmpstr)
tmpsrc = tmp.render(cxt)
print(tmpsrc)
Run Code Online (Sandbox Code Playgroud)

模板期望变量field1field2field3存在。但是field1field2并且不存在。我的目的是找到所有缺失的变量。

Jinja2默默地忽略丢失的变量。因此,我尝试添加StrictUndefined选项:

errs = []
try:
    env = Environment(undefined=StrictUndefined)
    tmp = env.from_string(tmpstr)
    tmpsrc = tmp.render(cxt)
except Exception as e:
    errs.append(str(e))
print(errs) …
Run Code Online (Sandbox Code Playgroud)

python jinja2 flask

2
推荐指数
2
解决办法
2396
查看次数