2014-06-19 57 views
0

我已經編寫了幾個步驟來處理一些文件(BAM文件,如果您好奇但這與我的問題無關:http://www.broadinstitute.org/igv/BAM),以使它們可以由其他人編寫的軟件進行分析。如何用「#」啓動python變量名?

在處理BAM文件的代碼中,我想包含幾行代碼來構建一個數據庫,該數據庫記錄了有關處理文件的位置和其他相關信息。這對於使用上述軟件進行分析是必要的。這個下游軟件的工作方式,數據庫的頂部應該有一個標題,該標題以行開頭的#開頭。

現在,我試圖使用一個熊貓DataFrame,以後我打算寫入一個文本文件。這是一個示例代碼片段,理論上顯示了我正在嘗試做什麼。它不起作用,因爲#會將該行的其餘部分變爲註釋。我也嘗試通過輸入\#來逃避特殊字符,但後來它抱怨,SyntaxError: unexpected character after line continuation character.有沒有人有任何關於如何解決這個問題的想法,以便我可以從#字符開始生成數據庫的標題行。

import pandas as pd 
I_notid_lst = ["1","3"] 
II_dir = ["/exampledir/moreexmaple/fake_01.bam.by_chr", "/exmapledir/moreexample/fake_02.bam.by_chr"] 

db_df = pd.DataFrame(dict(#I_notid = I_notid_lst, II_dir = II_dir_lst)) 
print db_df.head() 
+0

什麼你」重新要求不是一個以「#」開頭的「變量名」,它是一個「字典鍵」。 – RichieHindle

+0

@RichieHindle:但是'dict()'構造函數需要關鍵字參數,它必須是有效的Python *標識符*。 –

+0

@MartijnPieters:是的,我知道,但是OP實際想要的*是一本字典。僅僅因爲你可以使用標識符來建立這樣的事情並不意味着他們必須這樣做。 – RichieHindle

回答

3

#I_notid不是嚴格意義上的變量,但考慮到dict關鍵字參數,這是一個用於創建字典的構造函數。像名字這樣的關鍵字參數通常只能由字母數字字符和_組成,因此這種用法允許創建僅包含字符串且遵循Python命名約定的鍵的字典。

然而,一如既往,你可以使用{key: value, ...}字典字面結構與任何允許的類型鍵創建詞典,當然也有非字母數字字符的字符串鍵:

db_df = pd.DataFrame({'#I_notid': I_notid_lst, 'II_dir': II_dir_lst})