有没有办法使用python:
在YAML中存储和读取此正则表达式regular: /<title [^>]*lang=("|')wo("|')>/
任何人对此都有任何想法或解决方法吗?
我有以下错误:
% ch.encode('utf-8'), self.get_mark())
yaml.scanner.ScannerError: while scanning for the next token
found character '|' that cannot start any token
in "test.yaml", line 10, column 49
我的代码:
def test2():
clueAppconf = open('test.yaml')
clueContext = yaml.load(clueAppconf)
print clueContext['webApp']
答案 0 :(得分:2)
好吧,看起来问题是你选择代表这个正则表达式的标量类型。如果你嫁给了标量符号(yaml strings),你需要使用双引号标量和转义码来表示它所扼杀的特殊字符。所以,你的yaml应该是这样的:
regular: "/<title [^>]*lang=("\x7C')wo("\x7C')>/"
我只是逃脱了它所窒息的角色以保持一些可读性,但是你可能需要逃避额外的角色,这取决于它是否会引发更多错误。此外,您可以使用unicode转义码。这看起来像这样:
regular: "/<title [^>]*lang=("\u007C')wo("\u007C')>/"
我对你的知识有点了解,所以我不知道如何在yaml中维护特殊字符及其可读性。根据我对yaml文档的粗略扫描,这是我能找到的最好的。