【Python 求助】这里大神多,有个比较初级的问题问一下大家

  • l
    ljq29
    RTRT
    刚才在格式化字符串,遇到了这样的一种字符串(HTML样式):
    1. @list l0:level5
    2. {mso-level-number-format:alpha-lower;
    3. mso-level-text:"%5\)";
    4. mso-level-tab-stop:none;
    5. mso-level-number-position:left;
    6. margin-left:105.0pt;
    7. text-indent:-21.0pt;}
    复制代码



    众所周知,Python有三种格式化字符串的方式:
    1. 1. %-formatting格式化字符串
    2. 最早的格式化是用%(百分号), 它这么用:

    3. In : name = 'World'
    4. In : id = '10'
    5. In : 'Hello %s,id=%s' %(name,id)
    6. Out: 'Hello World,id=10'
    7. 这里用的%s表示格式化成字符串,另外常用的是%d(十进制整数)、%f(浮点数)。

    8. 另外也支持使用字典的形式:

    9. In : 'Hello[%(name)s],id=%(name)s' % {'id': 10, 'name': 'World'}
    10. Hello[World],id=10
    11. 2. str.format()格式化字符串
    12. 常规用法

    13. In : name = 'World'
    14. In : 'Hello {}' %(name)
    15. Out: 'Hello World'
    16. 通过位置访问:

    17. In : '{2}, {1}, {0}'.format('a', 'b', 'c')
    18. Out: 'c, b, a'
    19. 通过关键字访问:

    20. In : 'Hello {name}'.format(name='testerzhang')
    21. Out: 'Hello testerzhang'
    22. 3. f-string格式化字符串
    23. Python3.6 版本开始出现了此新的格式化字符串,性能又优于前面两种方式。

    24. In : name = "testerzhang"
    25. In : print(f'Hello {name}.')
    26. In : print(f'Hello {name.upper()}.')
    27. Out: Hello testerzhang.
    28. Out: Hello TESTERZHANG.
    29. In : d = {'id': 1, 'name': 'testerzhang'}
    30. In : print(f'User[{d["id"]}]: {d["name"]}')
    31. Out: User[1]: testerzhang
    32. 注意:如果低于Python3.6,可以通过pip install future-fstrings即可,在相应的py 文件里不需要加import这个库,但是需要头部加上# coding: future_fstrings。
    复制代码



    因为里面带{}、%,所以采用方法1、2都失败了。想知道有什么办法可以格式化字符串吗?
  • 猛禽
    都可以加反斜杠转义。
  • r
    rihkddd
    用Python3的f-string。大量文本的格式化用模板渲染。