2017-08-18 1 views
0

Je suis totalement nouveau en python mais je travaille sur un petit projet. J'ai un un fichier et un fichier B comme ci-dessous: enter image description herecomment trouver les mêmes mots dans deux fichiers csv en utilisant Python 3

Et je veux comparer A & B et les mots que dans les deux A & fichiers B. J'ai essayé plusieurs méthodes mais je ne pouvais pas le résoudre quand même.

Quelqu'un peut-il m'aider avec? Merci!

+2

Il n'est pas clair quelle est la sortie souhaitée. –

+0

Dans mon exemple, je veux obtenir «majeur», «stats», car ils sont à la fois dans A et B. – Laura

Répondre

1

Rthomas529 a la bonne idée, mais il se heurte à quelques pièges. Il manque des cas où il y a de la ponctuation, des majuscules inconsistantes ou des lignes avec plusieurs mots.

# Load the files for processing 
file_1 = open('f1.txt') 
file_2 = open('f2.txt') 

# Prep some empty sets to throw words into 
words_1 = set() 
words_2 = set() 

for word in file_1.read().split(): 
    cleaned_word = ''.join([ 
     i for i in list(word.lower()) 
     if i.isalpha() or i == "'" 
    ]) 
    if cleaned_word != '': # Just in case! 
     words_1.add(cleaned_word) 

for word in file_2.read().split(): 
    cleaned_word = ''.join([ 
     i for i in list(word.lower()) 
     if i.isalpha() or i == "'" 
    ]) 
    if cleaned_word != '': # Just in case! 
     words_2.add(cleaned_word) 

similar_words = words_1 & words_2 
+0

Salut Jordan, ça a marché !!!!! Merci beaucoup !!!!!!! Tu as fait ma journée! – Laura

0

Vous pouvez simplement créer 2 listes et les comparer.

list1 = [] 
list2 = [] 

with open('file1', 'r+') as myfile1: 
    for line in myfile1: 
     list1.append(line) 

with open('file2', 'r+') as myfile2: 
    for line in myfile2: 
     list2.append(line) 

compare = set(list1) & set(list2) 
+0

Merci! J'ai essayé d'utiliser set mais il dit: TyperError: type (s) d'opérande non supporté (s) pour &: 'set' et 'list'. Je pense que je ne peux pas 'définir' directement puisque je suis en train de comparer une liste de listes ([[], [], [], []]) avec une liste? Je ne sais pas si les pandas peuvent le faire? ou Ai-je besoin d'une boucle for en utilisant votre méthode? – Laura

+0

Regardez la réponse de Jordan Singer. Je ne vous répondais pas assez en profondeur. – Rthomas529

+0

si vos listes sont déjà bien formatées mapped1 = [i pour i dans list2 si i dans list1] fonctionnera pour une liste dans une liste. Essayez-le avec list1 = [['a', 'x'], ['b', 'x'], ['c', 'x']] list2 = [['a', 'x'], [ 'a', 'z'], ['b', 'x']] comme test. – Rthomas529