您好,匿名用户
随意问技术百科期待您的加入

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

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来做这个事情呢 ?

用户头像 提问 2014年 5月26日 @ Virgo 上等兵 (284 威望)
分享到:

1个回答

0 投票
 
最佳答案
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

用户头像 回复 2014年 5月26日 @ Gragas 上等兵 (254 威望)
选中 2013年 9月7日 @Virgo
提一个问题:

相关问题

0 投票
1 回复 27 阅读
用户头像 提问 2014年 1月30日 @ Nocturne 上等兵 (262 威望)
0 投票
0 回复 32 阅读
0 投票
1 回复 80 阅读
0 投票
1 回复 43 阅读
+2 投票
1 回复 55 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...