2015-02-20 2 views
1

Я пытаюсь создать программу, которая подсчитывает строку, подсчитывает определенное слово, а затем сообщает вам, в какой строке она находится. Теперь я сделал первые два, однако я не уверен, как найти, на какой строке это слово. какие-либо предложения ? это мой код в данный момент:Как найти, на какой строке есть конкретное слово. [python]

name = input('Enter name of the text file: ')+'.txt' 

file = open(name,'r') 

myDict = {} 
linenum = 0 

for line in file: 
    line = line.strip() 
    line = line.lower() 
    line = line.split() 
    linenum += 1 

print(linenum-1) 

count = 0 
word = input('enter the word you want us to count, and will tell you on which line') 
#find occurence of a word 
with open(name, 'r') as inF: 
    for line in inF: 
     if word in line: 
      count += 1 

#find on which line it is 

PS: Я хочу, чтобы оштрафовать порядковый номер строки, а не печатать всю строку

+0

Просто выполните 'print line ', когда' if word in line: 'condition is' True'. Если вы хотите совместить точное слово, а не только подстроку, используйте регулярное выражение со словом-границами. –

+0

, который напечатает всю строку. Я хочу найти номер индекса строки, в которой он включен. позвольте мне изменить свой вопрос – matrixCode

+0

'для индекса, строка в перечислении (inF): ...' –

ответ

5

Ваша программа может быть упрощена следующим образом:

# read the file into a list of lines 
with open('data.csv','r') as f: 
    lines = f.read().split("\n") 


print("Number of lines is {}".format(len(lines))) 

word = 'someword' # dummy word. you take it from input 

# iterate over lines, and print out line numbers which contain 
# the word of interest. 
for i,line in enumerate(lines): 
    if word in line: # or word in line.split() to search for full words 
     print("Word \"{}\" found in line {}".format(word, i+1)) 

в следующем примере текстового файла:

DATE,OPTION,SELL,BUY,DEAL 
2015-01-01 11:00:01, blah1,0,1,open 
2015-01-01 11:00:01, blah2,0,1,open 
2015-01-01 11:00:01, blah3,0,1,open 
2015-01-01 11:00:02, blah1,0,1,open 
2015-01-01 11:00:02, blah2,0,1,someword 
2015-01-01 11:00:02, blah3,0,1,open 

результаты программы в:

Number of lines is 7 
Word "someword" found in line 6 

Обратите внимание, что это не принимает во внимание пример, в котором у вас есть подстроки, например. «Собака» будет найдена в «собаках». Чтобы иметь полные слова (т. Е. Разделенные пробелами), вам нужно дополнительно разделить строки на слова.

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