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
barantt01
V2EX  ›  Python

请教一个关于 Python repr 方法的问题

  •  
  •   barantt01 · 4 天前 · 753 次点击

    示例代码如下

    tmp = '{"{\"username\":\"juheso\",\"is_cache\":1}":3}'
    print(tmp)
    print(repr(tmp))
    tmp_1 = r'{"{\"username\":\"juheso\",\"is_cache\":1}":3}'
    print(tmp_1)
    

    我运行之后的结果为

    {"{"username":"juheso","is_cache":1}":3}
    '{"{"username":"juheso","is_cache":1}":3}'
    {"{\"username\":\"juheso\",\"is_cache\":1}":3}
    

    我想要的结果其实是{"{\"username\":\"juheso\",\"is_cache\":1}":3}

    但是为什么 repr() 没有效果呢?

    我的 python 版本为 3.10

    8 条回复    2025-01-16 22:23:36 +08:00
    superrichman
        1
    superrichman  
       4 天前
    仔细琢磨

    print('\"' == '"')
    print(r'\"' == '\\"')
    barantt01
        2
    barantt01  
    OP
       4 天前
    @superrichman 这两个都是 True 我知道,我的疑问是在 repr 方法上。因为在实际使用是这个 tmp 其实是一个变量,没法用 r''来表示
    eccstartup
        3
    eccstartup  
       4 天前
    ```python
    import json

    s = '{"{\"username\":\"juheso\",\"is_cache\":1}":3}'
    raw_s = json.dumps(s)[1:-1]
    print(raw_s) # 输出: "Hello\\nWorld"
    ```

    输出
    `{\"{\"username\":\"juheso\",\"is_cache\":1}\":3}`

    比较接近了
    julyclyde
        4
    julyclyde  
       4 天前
    你这个不是 repr 方法而是 repr 函数
    ma46
        5
    ma46  
       3 天前
    @julyclyde 内置函数 repr 调用的就是对象的__repr__方法
    ma46
        6
    ma46  
       3 天前
    对于 tmp 变量, 其内存里存的字符串就是{"{"username":"juheso","is_cache":1}":3}, 你还想 repr 输出什么东西来? 变量赋值里的 \ 根本就不是字符串的一部分, 它的作用是告诉编译器 " 是字符串的一部分

    我觉得你还没理解转义字符
    julyclyde
        7
    julyclyde  
       3 天前
    @ma46 我知道啊。但是提问是方法而非函数这个错误依然是存在的
    lijiachang
        8
    lijiachang  
       2 天前
    tmp = r'{"{\"username\":\"juheso\",\"is_cache\":1}":3}'
    print(tmp)

    声明的时候就要加 r ,否则你就写个转换函数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1663 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:50 · PVG 00:50 · LAX 08:50 · JFK 11:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.