在python中导入带有元组的文件

时间:2018-11-13 12:49:23

标签: python tuples

我是python的新手,我在python中导入文件时遇到问题。我的目标是读取下面的文件,然后在下面创建一个输出字符串。

File:
((781, 572, 10, ['2018-11-20-50-56'], 8), (1205, 528, 13, ['2018-11-20-50-56'], 5), (97, 528, 10, ['2018-11-20-50-56'], 8), (146, 1257, 10, ['2018-11-20-50-56'], 8), (1244, 528, 13, ['2018-11-20-50-56'], 5), (291, 1257, 12, ['2018-11-20-50-56'], 6), (781, 1257, 10, ['2018-11-20-50-56'], 8)))

Output string:
select * from table where field1=781 and field2=572
select * from table where field1=1205 and field2=528
select * from table where field1=97 and field2=528
.
.
.

我不确定该怎么做。我尝试了一些代码,但是没有成功。

result = []
with open(r"c:\temp\fp\fp.txt", "rb") as fp:
    for line in fp.readlines():
        tmp = list(line)
        try:
            result.append(tmp[0], [1])
            #result.append((eval(tmp[0]), eval(tmp[1])))
        except:
             print("a")
print(result)

这种转换可能吗?

2 个答案:

答案 0 :(得分:0)

因此,您想将元组中每个元组的前两个值粘贴到一个字符串中(大概是一个用作数据库查询的字符串)?您可以执行以下操作:

yourData = ((781, 572, 10, ['2018-11-20-50-56'], 8), (1205, 528, 13, ['2018-11-20-50-56'], 5))
queryList = []

for t in yourData:
    queryList.append("SELECT * FROM table WHERE field1={0} and field2={1};".format(t[0], t[1]))

然后,queryList[0]包含:

"SELECT * FROM table WHERE field1=781 and field2=572;"

queryList[1]将包含:

"SELECT * FROM table WHERE field1=1205 and field2=528;"

Here是上述示例中使用的.format()方法的一些信息。

  

编辑:如果您的数据在文件中,则以(yourFile.txt)格式存储:

(781, 572, 10, ['2018-11-20-50-56'], 8)
(1205, 528, 13, ['2018-11-20-50-56'], 5)

然后,您可以使用eval方法将str返回的readlines()对象转换为tuple,然后以上述方式对其进行迭代。例如:

with open("yourFile.txt", "rb") as f:
    for line in f.readlines():
        queryList.append("SELECT * FROM table WHERE field1={0} and field2={1};".format(eval(line)[0], eval(line)[1]))   

答案 1 :(得分:0)

非常感谢您的帮助。

我测试了您的代码,显然这与目标非常接近,我将尝试进行一些更改,现在我有了:

["SELECT * FROM table WHERE field1=(781, 572, 10, ['2018-11-20-50-56'], 8) and field2=(1205, 528, 13, ['2018-11-20-50-56'], 5);"]

我将尝试获取第一个值(781)