Python 的字符串格式化: f-string 可以通过变量赋值的方法使用么?

2019-07-08 00:34:34 +08:00
 ideacco

本人有一堆 HTML 格式的文件需要多语言替换其中的一些字符串。

本来是这样写的:

title = '中文标题'
name = '中文名称'

html_format = F"""<html>xxxxxxxx {title} xxxxxxx,xxxxx{name}xxxxxx 很长很长的字符串....."""


写了几个发现,这样写实在是太麻烦了啊,代码完全写死在一个文件里面,没法吧模板字符串分离出来。 大家有没有什么方法可以实现类似这样的写法?:

html = """<html>xxxx.xxxx{xxx}{xx}""" ## 把字符串单独存到一个变量里面

Fhtml ##html 是变量.F 是 f_string 方法

PS:虽然知道有模板引擎 Jinja2,但是不喜欢它在渲染的时候传参太墨迹了啊。

3082 次点击
所在节点    Python
11 条回复
ideacco
2019-07-08 01:21:05 +08:00
有一个比较诡异的方法:

```
name = '邪恶的 EVAL'
my_str = "F'这个变量名字是:{name}'"

print(eval(my_str2))

>>> 这个变量名字是:邪恶的 EVAL

```

使用的时候,把 HTML 模板文档编辑好后,头部加上 str = """F""",尾部加上"""""",然后通过 import 引入这个变量就可以了。
PlushieChicka
2019-07-08 01:27:13 +08:00
用 eval 把文本拼凑成 f_string
ysc3839
2019-07-08 01:33:40 +08:00
print(html.format(**locals()))
ideacco
2019-07-08 01:36:29 +08:00
@PlushieChicka 感谢,可以用了
ideacco
2019-07-08 01:42:20 +08:00
@ysc3839 我擦,大神啊,学到了学到了。
有句话送给你:效率恐怖,代码风骚!!!
yexiaoxing
2019-07-08 02:13:16 +08:00
twotiger
2019-07-08 09:31:07 +08:00
现在流行前后端分离了。后端只传递 json。
itskingname
2019-07-08 09:49:13 +08:00
正常的学习路径是先知道字符串的.format 然后再知道 f 表达式。你怎么是反过来的。知道 f 表达式却不知道 format
ideacco
2019-07-08 11:12:13 +08:00
@itskingname 说的是,因为是新手,所以看的都是最新的文档,之前的方法还不是很了解
ideacco
2019-07-08 11:13:10 +08:00
@twotiger 我本身是设计师啊,但是翻译的工作也在我这边,所以只是做简单工具,不是在服务器上用的
hjq98765
2019-07-08 18:28:46 +08:00
老老实实.format 吧,个人不太喜欢 f-string,语法上既不是带括号的函数又不是空一格的命令也不是带点儿的方法,感觉很怪

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX