2015-04-02 86 views
0

我正在打開文本文件,顯示該文件中的字符總數,然後對每個字符(字母,數字,標點符號等)進行分類。我的範圍是從32-127的ASCII表格,出於某種原因,字符數似乎超過了我在網上查到字符數時所看到的數字。Python字符數不準確?

def totalLength(): 
    inFile = open("draft_UTF-8.txt", 'r', encoding = 'ISO-8859-1') 
    readFile = inFile.read() 
    print("Total amount of characters with spaces included:", len(readFile)) 
    inFile.close() 

除此之外,每當我歸類我的文件,我的節目顯示,有人物了ASCII的範圍,儘管我沒有把ASCII範圍之外的任何字符。 這是我組織的代碼。

inFile = open("draft_UTF-8.txt", 'r', encoding = 'ISO-8859-1') 
readFile = inFile.read() 
alpha = 0 
num = 0 
space = 0 
special = 0 
other = 0 
for lines in readFile: 
    for ch in lines: 
     if ch in string.ascii_letters: 
      alpha += 1 
     elif ch in string.digits: 
      num += 1 
     elif ch == ' ': 
      space += 1 
     elif ch in string.punctuation: 
      special += 1 
     else: 
      other += 1 

然後我會打印每個類別。在我的文本文件,我有以下:

1234567890 
abcdefghijklmnopqrstuvwxyz 
ABCDEFGHIJKLMNOPQRSTUVWXYZ 
~`[email protected]#$%^&*()_-++|\}]{[「’:;?/>.<, 

輸出將是:

Total amount of characters with spaces included: 101 

There are 52 occurrences of alphabetical characters. 

There are 10 occurrences of numerical characters. 

There are 0 occurrences of white spaces. 

There are 30 occurrences of punctuation characters. 

there are 9 occurrences of other characters. 

我想通了,其他的角色出現,從標點符號來了,但不知道哪一個。有什麼建議麼?

編輯:我想通過我的輸出獲得額外字符的原因是因爲編碼:ISO-8859-1。我的主要問題是,除非我使用這種編碼,否則Python不會運行我的程序,主要是因爲我使用的是MAC OS。它在PyCharm上沒有它,但是在Python上,我的程序會崩潰。

+1

行將以換行符結束。你考慮過了嗎?此外,要遍歷行,您應該使用'readlines()'方法。 – 2015-04-02 14:47:20

+0

我不明白你看到了什麼問題。 – interjay 2015-04-02 14:54:21

+0

我的總字符數已經減少了一些,而當文本文件較大時,總字符數已經減少了數百。另外,在我的文本文件中,沒有「其他」字符,但我的程序輸出顯示有。 – Zyanaster 2015-04-02 14:55:45

回答

0

哦,明白了。謝謝。在添加編碼= ISO-8859-1之前,我有各種文本文件,其中之一是UTF-8和.txt文件。最初,我的文件沒有在常規的.txt文件上工作,但是使用UTF-8。然後,在Python上,UTF-8沒有工作,但在PyCharm上工作。所以現在我的編碼加上了一個UTF-8,這就是爲什麼。謝謝!我爲這個愚蠢的問題表示歉意,我對編碼很陌生,所以現在我已經知道了這一點。