我试图将包含土耳其语字符的单词转换为小写.
从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)
以下是它在损坏时的外观:

这里发生了什么?
一些可能有用的信息:
我试图从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)
模板期望变量field1,field2并field3存在。但是field1,field2并且不存在。我的目的是找到所有缺失的变量。
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)