V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ideacco
V2EX  ›  Python

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

  •  
  •   ideacco · 2019-07-08 00:34:34 +08:00 · 3108 次点击
    这是一个创建于 1995 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人有一堆 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,但是不喜欢它在渲染的时候传参太墨迹了啊。

    11 条回复    2019-07-08 18:28:46 +08:00
    ideacco
        1
    ideacco  
    OP
       2019-07-08 01:21:05 +08:00
    有一个比较诡异的方法:

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

    print(eval(my_str2))

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

    ```

    使用的时候,把 HTML 模板文档编辑好后,头部加上 str = """F""",尾部加上"""""",然后通过 import 引入这个变量就可以了。
    PlushieChicka
        2
    PlushieChicka  
       2019-07-08 01:27:13 +08:00   ❤️ 1
    用 eval 把文本拼凑成 f_string
    ysc3839
        3
    ysc3839  
       2019-07-08 01:33:40 +08:00   ❤️ 1
    print(html.format(**locals()))
    ideacco
        4
    ideacco  
    OP
       2019-07-08 01:36:29 +08:00
    @PlushieChicka 感谢,可以用了
    ideacco
        5
    ideacco  
    OP
       2019-07-08 01:42:20 +08:00
    @ysc3839 我擦,大神啊,学到了学到了。
    有句话送给你:效率恐怖,代码风骚!!!
    yexiaoxing
        6
    yexiaoxing  
       2019-07-08 02:13:16 +08:00
    twotiger
        7
    twotiger  
       2019-07-08 09:31:07 +08:00
    现在流行前后端分离了。后端只传递 json。
    itskingname
        8
    itskingname  
       2019-07-08 09:49:13 +08:00
    正常的学习路径是先知道字符串的.format 然后再知道 f 表达式。你怎么是反过来的。知道 f 表达式却不知道 format
    ideacco
        9
    ideacco  
    OP
       2019-07-08 11:12:13 +08:00
    @itskingname 说的是,因为是新手,所以看的都是最新的文档,之前的方法还不是很了解
    ideacco
        10
    ideacco  
    OP
       2019-07-08 11:13:10 +08:00
    @twotiger 我本身是设计师啊,但是翻译的工作也在我这边,所以只是做简单工具,不是在服务器上用的
    hjq98765
        11
    hjq98765  
       2019-07-08 18:28:46 +08:00
    老老实实.format 吧,个人不太喜欢 f-string,语法上既不是带括号的函数又不是空一格的命令也不是带点儿的方法,感觉很怪
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   912 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.