python - 从包含字符串和数字的文本文件中读取元组列表
问题描述
我有一个文本文件,其中每一行代表序列挖掘操作的结果。所以每个元组中的第一个元素是字符串(字母)的元组,第二个元素是频率(int)。
如何将这些从文本文件读回原始格式?格式如下,直接从文本文件中复制....似乎找不到任何类似的例子,但必须有一种方法可以轻松地做到这一点。
(('a',), 30838057)
(('a', 'b'), 23151399)
(('a', 'b', 'c'), 13865674)
(('a', 'b', 'c', 'e'), 8979035)
(('a', 'b', 'c', 'e', 'f'), 6771982)
(('a', 'b', 'c', 'e', 'f', 'g'), 4514076)
(('a', 'b', 'c', 'e', 'f', 'g', 'h'), 2403374)
解决方案
正如其他人评论的那样,您可以使用该ast.literal_eval()
函数,因为您的数据的格式似乎与 Python 文字相同:
import ast
from pprint import pprint
filename = 'tuples_list.txt'
tuple_list = []
with open(filename) as inp:
for line in inp:
values = ast.literal_eval(line)
tuple_list.append(values)
pprint(tuple_list)
输出:
[(('a',), 30838057),
(('a', 'b'), 23151399),
(('a', 'b', 'c'), 13865674),
(('a', 'b', 'c', 'e'), 8979035),
(('a', 'b', 'c', 'e', 'f'), 6771982),
(('a', 'b', 'c', 'e', 'f', 'g'), 4514076),
(('a', 'b', 'c', 'e', 'f', 'g', 'h'), 2403374)]
推荐阅读
- android - 将文件保存到 filesDir 但转到数据/用户
- activemq-artemis - 无法启动嵌入在 JBoss EAP 7.2 中的 ActiveMQ Artemis 的 Web 控制台
- c++ - 从另一个 c++ 程序编译 c++ 源代码
- javascript - 无法从mysql实现自动完成
- node.js - 使用 mongoose 为类似 Trello 的应用程序构建 mongoDB 模式的最佳方法?
- c# - SettingsProperty 上的 C# 循环
- javascript - 如何在 MongoDB 中制作动态正则表达式?
- nginx - Nginx Kubernetes Ingress 不提供 .ttf 或 .woff 文件
- ios - .class:hover .otherClass {...} - iOS Safari 不工作
- python-3.x - 如何在Python中获取具有纬度和经度的位置的卫星图像