2015-10-23 3 views
-3

У меня есть код, который подсчитывает буквы в словах, исключая специальные символы в конце. Я просто не могу понять, как заставить его исключать особый характер и в начале.PYTHON Как считать буквы в словах без специальных символов

Мой код до сих пор:

inFile = open('p.txt', "r").readlines() 

myResults = [] 
for i in range(20): 
    myResults.append(0) 

mySpecialList = [ '-', '+', '#', '@', '!', '(', ')', '?', '.', ',', ':', ';', '"', "'", '`' ] 

for line in inFile: 
    words = str.split(line) 
    for word in words: 
     if word not in mySpecialList: 
     if word[ -1 ] not in mySpecialList : 
      myResults[ len(word) ] += 1 
     else : 
      myResults[ len(word) - 1 ] += 1 


print(myResults) 

ответ

2

Вот некоторые простой код, чтобы сосчитать все буквенно-цифровые буквы одного слова.

word = "Hello World!" 
count = 0 
for c in word: 
    if c.isalnum(): 
     count +1 
print(count) 

Если вы хотите использовать свои специальные символы, которые Вы могли бы адаптировать код выглядеть

mySpecialList = ['*', '!'] 
    word = "Hello World!" 
    count = 0 
    for c in word: 
     if c not in mySpecialList: 
      count +1 
    print(count) 
+0

Брайан Каин не мог бы вы помочь нам в том, как адаптировать код к этому? Чтобы все еще иметь возможность подсчитать все слова в файле, а затем составить список того, сколько х-длинных символов символов есть – user3428515

+0

У вас уже есть код уже существующий. Большинство ваших оставшихся задач для достижения вашей цели - включить мой ответ в ваш код. Вы должны иметь возможность заменить свое содержание «на слово в словах:» контуром с моим ответом, чтобы получить конечный результат. –

+0

Это действительно не помогает мне, так как я пытаюсь получить количество всех букв x-номера. Если вы можете просто выполнить код, вы увидите, что я пытаюсь выполнить – user3428515

0

Вы можете использовать регулярные выражения, попробуйте! Например, вы можете разделить строку, и после findall у вас есть список со всеми словами.

import re 

string = "Hello World, Hi + Say" 
print(re.findall(r"[\w']+", string)) 
+0

aarexer. Я не выполняю ваше решение. Я хочу получить что-то вроде этого [0, 73, 63, 750, 592, 859, 884, 790, 592, 418, 279, 181, 83, 34, 12, 6, 2, 0, 1, 0] Где 0 - количество 0-буквенных слов Где 73 - количество 1-буквенных слов Где 630 - количество 2-буквенных слов – user3428515

+0

Это что-то вроде этого? «Hello World» >> [1, 1, 2, 2, 1, 1, 1, 1] Да? – aarexer

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