2015-04-02 4 views
0

Я работаю над открытием текстового файла, отображает общее количество символов в этом файле, а затем классифицирует каждый символ (альфа, числовые, пунктуации и т. Д.). Мой диапазон - таблица ASCII от 32-127, и по какой-то причине количество символов, похоже, больше, чем то, что я видел, когда я помещал его в число символов в Интернете.Количество символов 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. 

Я понял, что другие проявления характера приходят из пунктуации, но не уверены, какой из них. Какие-либо предложения?

EDIT: Я понял, что причина, по которой я получаю дополнительные символы в моем выходе, связана с кодировкой: ISO-8859-1. Моя основная проблема заключается в том, что Python не будет запускать мою программу, если у меня не будет этой кодировки, главным образом потому, что я использую MAC-систему. Она работает без нее на PyCharm, но на Python моя программа потерпит крах.

+1

Линии заканчиваются символами новой строки. Вы считали это? Кроме того, для итерации по строкам следует использовать метод readlines(). –

+0

Я не понимаю, какую проблему вы видите. – interjay

+0

Мой общий счетчик символов отключен несколькими, а когда текстовый файл больше, общее количество символов отключено на сотни. Кроме того, в моем текстовом файле нет «других» символов, но мой выпуск программы говорит о том, что есть. – Zyanaster

ответ

0

О, получилось. Спасибо, dhke. До добавления кодировки = ISO-8859-1 у меня были различные текстовые файлы, одним из которых был UTF-8 и .txt-файл. Первоначально мой файл не работал на регулярном .txt, но работал с UTF-8. Затем, на Python, UTF-8 не работал, но работал над PyCharm. Итак, теперь у меня была кодировка PLUS UTF-8, и именно поэтому. Спасибо! Я извиняюсь за глупый вопрос, я новичок в кодировании, так что теперь я мог бы это понять.

Смежные вопросы