我是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)
这种转换可能吗?
答案 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)