Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从包含字符串和数字的文本文件中读取元组列表_Python_String_Int_Tuples - Fatal编程技术网

Python 从包含字符串和数字的文本文件中读取元组列表

Python 从包含字符串和数字的文本文件中读取元组列表,python,string,int,tuples,Python,String,Int,Tuples,我有一个文本文件,其中每一行表示序列挖掘操作的结果。所以每个元组中的第一个元素是字符串(字母)的元组,第二个元素是频率(int) 如何将这些从文本文件读回原始格式?格式如下,直接从文本文件复制。。。。似乎找不到任何类似的例子,但必须有一种方法可以轻松做到这一点 (('a',), 30838057) (('a', 'b'), 23151399) (('a', 'b', 'c'), 13865674) (('a', 'b', 'c', 'e'), 8979035) (('a', 'b', 'c',

我有一个文本文件,其中每一行表示序列挖掘操作的结果。所以每个元组中的第一个元素是字符串(字母)的元组,第二个元素是频率(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) 

正如其他人所评论的,您可以使用该函数,因为您的数据的格式似乎与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)]

这些都是有效的Python文本,您可以使用。但最好以更标准的格式存储它们。不确定这是否是最好的方法,但您可以尝试使用
replace()
将圆替换为方括号,然后在json模块中运行每一行。编辑:有趣的是,我从未遇到过
literal\u eval()
方法(简单的
eval()
显然不是一个好主意)。我认为这是一个比我的更优雅的解决方案。谢谢,它很有效。我没有打印,而是将每一行附加到一个列表中,现在我得到了我想要的数据结构。@Kingle:不客气。注意:稍微修改了我的答案,以表明我这样做了。