2015-03-03 125 views
1

因此,在一個Python任務中,我必須編寫一個mtf編碼文件的解碼器,該文件由十六進制字符和單詞組成。在我的解碼器中,我正在通過char讀取.mtf文件char,並檢查它是否包含字母或十六進制數字,我似乎無法使其工作。我抹去我的大部分代碼來重新開始,但這裏的基本框架:檢查文件中的字符是否可以是整數

f = open(str(sys.argv[1]), "r") 
new_f = str(sys.argv[1]) 
new_f = new_f[:len(new_f)-3]+ "txt" 
f_two = open(new_f, "w") 
myList = [] 
word = "" 
words = [] 
index = 0 


while True: 
    value = None 
    c = f.read(1) 
    if not c: 
     break 
    try: 
     value = int(c) 

    except ValueError: 
     word = word + c 

我的可怕編寫的代碼,並在寫這個我可能犯任何錯誤道歉,這是所有還比較陌生我。

謝謝!

+0

使用isdigit()函數 – MONTYHS 2015-03-03 06:19:07

+0

我試過了,它仍然不讀取整數。也許我應該發佈我正在閱讀的示例文件以顯示我必須解碼的內容? – 2015-03-03 06:27:05

+0

您如何知道'A'是一封信還是使用您的方法是十六進制數? – Johan 2015-03-03 06:32:53

回答

1

當您從Python中的文件讀取時,您正在讀取字符串。字符串也有一個叫做isdigit()的方法,告訴你一個字符是否是一個數字。

while c: 
    c = f.read(1) 
    if c.isdigit(): 
     myList.append(c) 

如果您正在檢查十六進制字符(0-9,A-F),您將不得不建立自己的檢查功能。這樣的事情:

def is_hex(n): 
    return n.isdigit() or ("A" <= n.upper() <= "F") 
相關問題