- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的测试代码可以在 Python 2.7.11 中运行,但在 Python 3.5.1 中失败:
import pyparsing as pp
import pickle
class Greeting():
def __init__(self, toks):
self.salutation = toks[0]
self.greetee = toks[1]
word = pp.Word(pp.alphas+"'.")
salutation = pp.OneOrMore(word)
comma = pp.Literal(",")
greetee = pp.OneOrMore(word)
endpunc = pp.oneOf("! ?")
greeting = salutation + pp.Suppress(comma) + greetee + pp.Suppress(endpunc)
greeting.setParseAction(Greeting)
string = 'Good morning, Miss Crabtree!'
g = greeting.parseString(string)
pkl = 'test .pkl'
pickle.dump(g, open(pkl, 'wb'))
pickle.load(open(pkl, 'rb'))
错误信息如下:
Traceback (most recent call last):
File "C:/Users/Arne/parser/test.py", line 23, in <module>
pickle.load(open(pkl, 'rb'))
TypeError: __new__() missing 1 required positional argument: 'toklist'
__new__()
指的是 pyparsing.ParseResults.__new__(cls, toklist, name=None, asList=True, modal=True )
。
在 Python 3.5.1 中,通常仍然可以 pickle 由 pyparsing
返回的对象吗?或者发生了一些变化?
有人可以提供一个使用 pickle
和 pyparsing 2.0.7
的简短代码示例吗?
我的真实语法需要几分钟来解析,所以我真的很高兴能够在进一步处理之前存储结果。
最佳答案
此操作因 protocol=2
失败(pickle.dump
的可选第三个参数),但如果您使用 pickle protocol
= 0 或1. 在Python 2.7.10上,0是默认协议(protocol)。在 Python 3.5 上,pickle 有协议(protocol) 0-4,同样,pickling ParseResults 仅适用于协议(protocol) 0 和 1。但在 Py3.5 中,默认协议(protocol)已更改为 3。您现在可以通过指定协议(protocol)来解决此问题0 或 1。
有关 pickle 协议(protocol)的更多信息,请访问 https://docs.python.org/3/library/pickle.html?highlight=pickle#data-stream-format
关于python - 在 Python 3.5.1 中酸洗 ParseResult 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243105/
我正在使用以下类型的 Pyparsing 表达式。 pp.SkipTo(common_cfg)('value 2') + common_cfg + pp.SkipTo(pp.LineEnd()) co
我开发了一个 pyparsing 语法,它必须向输出插入新的标记。此标记不是来自原始输入。 例如: 输入: '/* foo bar*/' 输出: ['comment', '/* foo bar*/']
我正在开发一个翻译器,用于将 PC 上的简单脚本翻译成一些字节码,以便在微 Controller 上执行它(字节码)。 我已经使用 lex 和 re2c 在 C++ 中开发了翻译器,但我正在考虑切换到
是否可以告诉 pyparsing 不存储 ParseResults 或手动丢弃它们? 我正在解析一个大型项目文件,并且可以通过解析操作对每个项目进行所有后处理。因此,一旦一个项目被解析,我就不再需要它
>>> from pyparsing import Word, alphanums, OneOrMore, Optional, Suppress >>> var = Word(alphanums) >
我有一个 ParseResults 对象,当我转储它时它看起来像这样: [[['FM4', '230', '30', '680']]] [0]: [['FM4', '230', '3
我的 PyParsing 语法有以下测试代码: from pyparsing import Word, nums, alphas, delimitedList, Group, oneOf from p
我目前正在尝试将 pyparsing 的结果作为纯列表获取,以便我可以展平它。我在文档中读到 ParseResults can also be converted to an ordinary lis
我觉得在尝试构建生成的解析树(在 pyparsing 中称为 ParseResults)时,ParseActions 使我的代码有点笨拙。 我现在要做的是使用全局变量来存储 Group 元素返回的匹配
我在 Heroku 上运行应用程序时遇到问题。本地版本似乎工作正常,但我无法在 heroku 平台上调用 create_db()。 这是错误轨迹。 (venv)S-MBP:LaunchPage3 S$
我目前正在使用 pyparsing 来识别字符串中是否使用了嵌套括号,以便识别错误地连接到单词的引用号。 例如,“苹果(4)”。 我希望能够识别引用子标记(“(4)”)。但是,当我使用 searchS
有谁知道 Heroku 在部署时有什么变化?我有一个使用 Ubuntu 11.10 的本地开发机器设置,我的项目安装到 venv 中,所有包都通过 pip 管理。相应的requirements.txt
我使用 scala.util.parsing.combinators.Parsers 编写了词法分析器和解析器。我的作品中至少有一个错误,但我有太多错误,很难通过观察它们来确定问题所在。 我需要的是我
非常感谢任何有将 redis 配置为 heroku 上 celery-brokered django 项目后端经验的人的意见。我的任务调度在 localhost 上运行良好,但我发现将它部署到 her
我的测试代码可以在 Python 2.7.11 中运行,但在 Python 3.5.1 中失败: import pyparsing as pp import pickle class Greeting
这里我将第三方库volley转移到retrofit。实际上我在很多项目中都使用了retrofit,但这是一些独特的问题和解决方案,也没有从google得到。 此处应用构建 Gradle: apply
我是一名优秀的程序员,十分优秀!