gpt4 book ai didi

python - 解析时意外的 EOF(解析字典)

转载 作者:行者123 更新时间:2023-12-03 08:22:37 41 4
gpt4 key购买 nike

大家好,祝大家有美好的一天!

我正在研究数据解析器。它必须从网页中提取数据,将其存储在 .txt 文件中,然后运行一个模块来解析此 .txt 并创建一个 .xls,其中的数据按我想要的方式排序。

我有三个模块:
一种是只从页面中提取 html 的“蜘蛛”。
第二个解析 html 并创建一个包含所有必需数据的字典。
第三个从 dict 中提取数据并从中创建一个 .xls。

每个模块都可以自己正常工作。我的意思是,如果我手动执行它,我不会得到任何错误。
问题是当我使这个过程自动进行时(从第一个模块调用第二个模块,从第二个模块调用第三个模块)它在结束调用时崩溃:

Traceback (most recent call last):
File "/home/desprit/Documents/Python/examples/pg_parsing/data_parser.py", line 296, in <module>
data_parser('verona')
File "/home/desprit/Documents/Python/examples/pg_parsing/data_parser.py", line 285, in data_parser
next_step(where)
File "/home/desprit/Documents/Python/examples/pg_parsing/data_parser.py", line 292, in next_step
save_to_excel_01.save_to_excel(where)
File "/home/desprit/Documents/Python/examples/pg_parsing/save_to_excel_01.py", line 39, in save_to_excel
imported_data = ast.literal_eval(imported_data)
File "/usr/lib/python2.7/ast.py", line 49, in literal_eval
node_or_string = parse(node_or_string, mode='eval')
File "/usr/lib/python2.7/ast.py", line 37, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 0

^
SyntaxError: unexpected EOF while parsing

我已经检查了所有内容,并在谷歌上搜索了两天试图弄清楚该怎么做,但什么也没做。

这是模块的链接:

data_parser.py ---> http://codepad.org/nPH3LEay

save_to_excel.py ---> http://codepad.org/9kQ0IzKs

我还附上了一个由 data_parser.py 生成的 dict 的示例 ---> the_same_domain_as_above/XYPWMcgB

如我所见,当 出现意外的EOF ast.literal_eval() 开始解析字典。
但是wtf?字典还可以。同时,当我手动执行 save_to_excel.py 时,工作正常!

很抱歉模块中有这么多东西。几周前我开始学习python,但仍然犯了很多错误-.-

如果有人设法帮助我,我会很高兴!
谢谢你的时间!

附言
我在这里添加了一部分代码(我不太确定)会导致问题:
imported_file = open('pg_database/' + where + '/converted/' + file)
imported_data = imported_file.read()
imported_data = ast.literal_eval(imported_data)

最佳答案

好的,一周后,在处理另一个项目时,我不小心发现了问题所在。考克斯爵士在上面的评论中问我关于编辑字典/元组的问题。但现在我发现我没有得到他的问题。

data = open('name.txt')
data = data.read()
converted_data = ast.literal_eval(data)

如果您之前在相同的代码中编辑 name.txt 并且 DIDNT close() 它,这会导致 EOL 错误。假设您有一个元组,并且您将其存储在文件中:
saver = open('name.txt', 'w')
saver.write(str(our_tuple))
saver.close() # you HAVE TO close it before opening it and calling ast.literal_eval on it's data. Otherwise you will get a EOL error.

关于python - 解析时意外的 EOF(解析字典),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23195982/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com