python ply 怎么从已经转义的字符串中替换成正确字符

发布于 2022-08-25 00:42:52 字数 499 浏览 13 评论 0

我的提取字符串的token函数是:

def t_STRING(t):
    r'\"([^\"]|\\.)*\"'
    t.value = t.value[1:-1]
    return t

有个办法是:

t.value=t.value.decode("string-escape")

但是这样并不能处理

\n, \t ,等复杂些的和自定义的转义

根据此文http://inst.eecs.berkeley.edu/~cs164/sp10/TA.d/flex-start-conditions.html,貌似应该用state.

怎么用ply来做这个事情呢 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

横笛休吹塞上声 2022-09-01 00:42:52
ES = r"""(\\(['"\?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F0-9]+))"""

STR = r'\"([^"\\\n]|'+ES+')*\"'
@TOKEN(STR)
def t_STRING(t):
    t.value = t.value[1:-1]
    return t

来自 ANSIC grammer

高跟鞋的旋律 2022-09-01 00:42:52

利用下 json 的 loads 好啦

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文