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

能认为嵌套了转义字符(或者其他类似操作)的表达方式是完备的吗?

  •  
  •   gossip · 2021-10-13 13:11:48 +08:00 · 2431 次点击
    这是一个创建于 1128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在比如 python 的文本处理中,有些符号有特定意义,在文本中我们选择转译\,从而达到输出原字符的目的

    但是如果我们就想输出,转译这个字符,那就得再转译。 这样如果从理论上,是否会出现混淆不清的情况。

    所以最终的问题是,在极端情况下,是否给定任意的字符串,都能在编程语言中正确地按照人们心愿地输出出来?

    15 条回复    2021-10-14 09:48:46 +08:00
    zoharSoul
        1
    zoharSoul  
       2021-10-13 13:30:29 +08:00
    是的.
    raw 文本即可.
    ipwx
        2
    ipwx  
       2021-10-13 13:34:47 +08:00
    把爷整乐了,楼主这是刚学习写代码吗
    est
        3
    est  
       2021-10-13 13:36:14 +08:00
    8bit 的 ASCII 是完备的。unicode 有漏洞。
    gossip
        4
    gossip  
    OP
       2021-10-13 13:58:16 +08:00
    @ipwx 是的,接触不多,瞎想想
    ipwx
        5
    ipwx  
       2021-10-13 14:03:24 +08:00
    @est 不会,UTF-8 是截断安全的。
    wangyu17455
        6
    wangyu17455  
       2021-10-13 14:19:38 +08:00
    去转义没有歧义,循环读取字符串,如果遇到的不是反斜杠就指针+1 然后记录当前字符,如果是反斜杠那就指针+2 然后记录当前字符,怎么会有歧义呢
    est
        7
    est  
       2021-10-13 14:21:33 +08:00
    @ipwx 有 normalization 问题。。几个不同的 byte 得到相同的字符。。
    0o0o0o0
        8
    0o0o0o0  
       2021-10-13 14:54:38 +08:00
    理论上不存在混淆或者不完备,只存在表达错误、语法错误
    gossip
        9
    gossip  
    OP
       2021-10-13 15:00:12 +08:00
    @wangyu17455 对哦,其实也就是,输入是什么,输出一定唯一确定(或输出错误)
    只是,我想问的是,是不是给任意的字符串都可以套到这个规则中去。

    也就是,如果 x 是输入,y 作为输出,是否对于每一个 y,都有唯一的 x ?
    gossip
        10
    gossip  
    OP
       2021-10-13 15:01:33 +08:00
    @gossip 也不是唯一的 x 啦,对于任意的 y,存在 x 即可。
    ipwx
        11
    ipwx  
       2021-10-13 15:44:02 +08:00   ❤️ 1
    @est 不是,楼主只是问:

    对于任意原始字符串 x,是否存在字面量 y,使得 f(y) = x 。
    ipwx
        12
    ipwx  
       2021-10-13 15:44:14 +08:00
    其中 f 就是编程语言的转移规范。
    gossip
        13
    gossip  
    OP
       2021-10-13 16:19:11 +08:00
    @ipwx 谢谢是这个意思
    est
        14
    est  
       2021-10-13 18:19:10 +08:00
    > 对于任意原始字符串 x,是否存在字面量 y,使得 f(y) = x 。

    这个没毛病,成立,python 的字符串表达式是没漏的。

    > 也就是,如果 x 是输入,y 作为输出,是否对于每一个 y,都有唯一的 x ?

    这个倒不唯一了。。。u'\x61' == 'a' == u'\u0061' == u'\U00000061'
    dicc
        15
    dicc  
       2021-10-14 09:48:46 +08:00
    但是如果我们就想输出,转译这个字符,请尝试使用 repr 函数 [doge]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5805 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:31 · PVG 11:31 · LAX 19:31 · JFK 22:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.