2013-06-04 4 views
0

Есть два предложения в "test_tweet1.txt"Ошибка: совпадение слов в файле

@francesco_con40 2nd worst QB. DEFINITELY Tony Romo. The man who likes to share the ball with everyone. Including the other team. 
@mariakaykay aga tayo tomorrow ah. :) Good night, Ces. Love you! >:D< 

В "Personal.txt"

The Game (rapper) 
The Notorious B.I.G. 
The Undertaker 
Thor 
Tiësto 
Timbaland 
T.I. 
Tom Cruise 
Tony Romo 
Trajan 
Triple H 

Мои коды:

import re 
popular_person = open('C:/Users/Personal.txt') 
rpopular_person = popular_person.read() 
file1 = open("C:/Users/test_tweet1.txt").readlines() 
array = [] 
count1 = 0 
for line in file1: 
    array.append(line) 
    count1 = count1 + 1 
    print "\n",count1, line 
    ltext1 = line.split(" ") 
    for i,text in enumerate(ltext1): 
     if text in rpopular_person: 
      print text 
    text2 = ' '.join(ltext1) 

Результаты от приведенных кодов:

1 @francesco_con40 2nd worst QB. DEFINITELY Tony Romo. The man who likes to share the ball with everyone. Including the other team. 
Tony 
The 
man 
to 
the 
the 

2 @mariakaykay aga tayo tomorrow ah. :) Good night, Ces. Love you! >:D< 
aga 

Я попытался совместить слово с "test_tweet1.txt" с "Personal.txt".

Ожидаемый результат:

Tony 
Romo 

Любое предложение?

ответ

0

вам нужно разделить rpopular_person, чтобы получить его, чтобы соответствовать слова вместо подстроки

rpopular_person = open('C:/Users/Personal.txt').read().split() 

это дает:

Tony 
The 

причина Ромо не отображается в том, что на вашей линии раскола вы имеют «Ромо». Возможно, вам стоит искать rpopular_person в строках, а не наоборот. Может быть что-то вроде этого

popular_person = open('C:/Users/Personal.txt').read().split("\n") 
file1 = open("C:/Users/test_tweet1.txt") 
array = [] 
for count1, line in enumerate(file1): 
    print "\n", count1, line 
    for person in popular_person: 
     if person in line: 
      print person 
+0

Я пробовал и не работал. Результаты пустые. – ThanaDaray

+0

@ThanaDaray Попробуйте добавить код, посмотрите, дает ли это то, что вы хотите – cmd

0

ваша проблема, кажется, что rpopular_person только одна строка. Поэтому, когда вы спрашиваете такие вещи, как 'to' in rpopular_person, вы получаете значение True, потому что символы 't', 'o' отображаются в последовательности. Я предполагаю, что то же самое относится к 'the' в другом месте в Personal.txt.

Что вы хотите сделать, так это разделить Personal.txt на отдельные слова, как вы делитесь своими твитами. Вы также можете сделать полученный список слов в set, так как это сделает ваш поиск намного быстрее. Что-то вроде этого:

people = set(popular_person.read().split()) 

Стоит также заметить, что я звоню split(), без аргументов. Это разбивается на все пробелы - символы новой строки, вкладки и т. Д. Таким образом, вы получаете все по отдельности, как вы планируете. Или, если вы не на самом деле хотите, чтобы это (так как это даст вам результаты «The» все время на основе вашего отредактированного содержания Personal.txt), сделать это:

people = set(popular_person.read().split('\n')) 

Таким образом, вы разделите на новые строки, так что вы будете искать только совпадения полного имени.

Вы не получаете «Ромо», потому что это не слово в вашем твиттере. Слово в твитте - «Ромо». с периодом. Это, скорее всего, останется проблемой для вас, поэтому я бы решил изменить логику (предполагая, что скорость не является проблемой). Вместо того, чтобы смотреть на каждое слово в своем твите, посмотрите на каждое имя в вашем файле Personal.txt и посмотрите, есть ли это in ваш полный твит. Таким образом, вам не нужно иметь дело с пунктуацией и так далее.Вот как я переписал вашу функциональность:

rpopular_person = set(personal.split()) 
with open("Personal.txt") as p: 
    people = p.read().split('\n') # Get full names rather than partial names 
with open("test_tweet1.txt") as tweets: 
    for tweet in tweets: 
     for person in people: 
      if person in tweet: 
       print person 
+0

Моя ошибка. да, как вы сказали «Ромо». Он показал после удаления специального символа, но «The» также показал. Вы предлагаете? – ThanaDaray

+0

@ThanaDaray «The» находится в вашем файле Personal.txt, поэтому он будет согласован. Если вы хотите только совместить полные имена, разделите Personal.txt на символ новой строки ('' \ n''). –

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