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

2021-10-13 13:11:48 +08:00
 gossip

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

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

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

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

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

对于任意原始字符串 x,是否存在字面量 y,使得 f(y) = x 。
ipwx
2021-10-13 15:44:14 +08:00
其中 f 就是编程语言的转移规范。
gossip
2021-10-13 16:19:11 +08:00
@ipwx 谢谢是这个意思
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
2021-10-14 09:48:46 +08:00
但是如果我们就想输出,转译这个字符,请尝试使用 repr 函数 [doge]

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

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

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

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

© 2021 V2EX