2015-11-10 4 views
0

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

Я на начальных этапах и хотели бы выход help.The это:

Enter path to filename :stems.txt 

['test\ntester\njest\ncompute\ncomputer\nliterate\nliteral\nliteracy\ncontinue\ncollaborate\n'] 

test 
tester 
jest 
compute 
computer 
literate 
literal 
literacy 
continue 
collaborate 

Вот мой код:

file = raw_input("Enter path to filename :") 

text_file= open(file,'r') 
data=text_file.read() 


def first2(): 
    lines = [] 
    lines.append(data) 
    print lines 

    letters = [] 
    for x in lines: 
     firstletter = x[:2]  
     return firstletter 

print first2() 

Я задаюсь вопросом, почему возвращение firstletter возвращает все слова, а не первые две буквы каждого слова?

ответ

1

Итерация по линиям:

file = raw_input("Enter path to filename :") 

text_file= open(file,'r') 
for line in text_file.readlines(): 
    print line[:2] 
text_file.close() 
+0

спасибо. почему woudlnt моя работа выше? когда слова были в списке, почему они не взяли первые два символа каждого слова в этом списке, а не только первое? – johndoe12345

+0

@ johndoe12345 у вас есть возврат на строку x в строках, поэтому в первой итерации он вернется, а также чтение будет возвращать вам все данные в виде строки, поэтому повторение по ней даст вам письмо каждый раз – Netwave

+0

Благодарю. любая идея, как я увижу, какие первые две буквы появляются чаще всего? – johndoe12345

1

Мы можем использовать объект счетчика из пакета коллекций.

from collections import Counter 

txt_file = open("word.txt") 
words = txt_file.readlines() 
txt_file.close() 

letter_pairs = [word[:2] for word in words] 
print Counter(letter_pairs) 

Выход будет:

Counter({'co': 4, 'li': 3, 'te': 2, 'je': 1}) 
+0

Это очень удобный трюк! Когда-нибудь мне придется копаться в пакете 'collections' ... – Jiby

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