如何在包含带有元组的元组的python中打开一个文件而不改变它。
我的问题是当我$sql = "SELECT email FROM users WHERE email = :email LIMIT :val ";
$dbh = $this->db->prepare($sql);
$dbh->bindParam(':email', $email, PDO::PARAM_STR);
$dbh->bindParam(':val', 1, PDO::PARAM_INT);
$dbh->execute();
$n = $dbh->rowCount();
if($n>0){
return TRUE;// return true here
}else{
return FALSE;// return false if not found in database
}
时,它变成了一个字符串,元组之间的空格消失了。我会收到这样的话:
function toggleAreas1() {
var $hide = $('[class^=toggle-areas] > .row:visible').each(function(){
$(this).fadeOut(function() {
// do what you need
});
});
如何在不修改的情况下打开它?
答案 0 :(得分:0)
只需将python代码写入或粘贴到元组即可。这样你之前的元组变成了一个字符串并失去了它的功能。 Python标准库中包含一个模块pickle
,可用于此目的。 Pickle只需将数据转换为带有pickle.dumps
函数的字节字符串,您可以将其写入文件,只需读取文件并将字符串插入pickle.loads
函数即可帮助您恢复元组原始形式。
我在下面举了一个例子:
>>> import pickle
>>> s = (2, 3, 5, 7, 11, 13)
>>> data = pickle.dumps(s)
>>> data
b'\x80\x03(K\x02K\x03K\x05K\x07K\x0bK\rtq\x00.'
>>> print(pickle.loads(data))
(2, 3, 5, 7, 11, 13)
我希望你对这是如何运作有所了解。
答案 1 :(得分:0)
将类似元组的字符串转换回元组的示例:
>>> e = '(((3,),(5,),(3,1),(2,1),(3,3,4),(2,2,7),(6,1,1),(4,2,2),(1,1),(3,1),(6,),(2,7),(6,3,1),(1,2,2,1,1),(4,1,1,3),(4
,2,2),(3,3,1),(3,3),(3,),(2,1)),((2,),(1,2),(2,3),(2,3),(3,1,1),(2,1,1),(1,1,1,2,2),(1,1,3,1,3),(2,6,4),(3,3,9,1),(5,3,2
),(3,1,2,2),(2,1,7),(3,3,2),(2,4),(2,1,2),(2,2,1),(2,2), (1,),(1,)))'
>>> type(e)
<class 'str'>
>>> import ast
>>> t = ast.literal_eval(e)
>>> type(t)
<class 'tuple'>
>>> t
(((3,), (5,), (3, 1), (2, 1), (3, 3, 4), (2, 2, 7), (6, 1, 1), (4, 2, 2), (1, 1), (3, 1), (6,), (2, 7), (6, 3, 1), (1, 2
, 2, 1, 1), (4, 1, 1, 3), (4, 2, 2), (3, 3, 1), (3, 3), (3,), (2, 1)), ((2,), (1, 2), (2, 3), (2, 3), (3, 1, 1), (2, 1,
1), (1, 1, 1, 2, 2), (1, 1, 3, 1, 3), (2, 6, 4), (3, 3, 9, 1), (5, 3, 2), (3, 1, 2, 2), (2, 1, 7), (3, 3, 2), (2, 4), (2
, 1, 2), (2, 2, 1), (2, 2), (1,), (1,)))