![](/img/trans.png)
[英]Which python re module to pick for translating a perl regular expression
[英]Translating a perl code, utilising the DBI module, to python with MySQLdb
我幾乎沒有python經驗,並且對perl的知識為零,但是我需要將連接到MySQL服務器的perl代碼轉換為python。
在perl子例程中,執行標准連接操作后,出現的代碼為:
my @tmp = @{$dbh->selectall_arrayref( $sql )};
my @types;
foreach my $t (@tmp) {
push @types, @$t[0];
}
return @types;
其中$ sql是MySQL選擇查詢。 我在python函數中要做的是:
cursor = conn.cursor()
cursor.execute( sql )
tmp = cursor.fetchall()
types = list( len( tmp ) )
for item in tmp :
types.append( item[0] )
return types
我的問題是@ $ t [0]包含什么,是否等同於tmp中的item [0]?
謝謝!
您應該能夠運行代碼來發現等效性,但是是的,這兩件事是等效的。
在perl示例中導致語法奇怪的是,perl在早期就對標量,數組和哈希進行了非常嚴格的分離,而數組和哈希只能將標量作為其存儲值。 通過在perl中添加引用(它們是指向數組和哈希的標量),可以很快改善這一點,但是語法已經設置了這種分隔,因此必須在語言中添加其他操作。
結果,第一行正在對數組引用的數組進行引用,並取消對外部引用的引用,因此它現在是數組引用的數組。 然后,它遍歷其中的所有那些引用,對它們取消引用,並獲取數組中的第一個元素。 因為@$t[0]
通常看起來很奇怪,所以您會看到它寫為$t->[0]
,這不需要您知道數組取消引用運算符( @
)的綁定比元素訪問運算符( [0]
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.