2016-04-15 9 views
-1

Ich habe das folgende Programm erstellt und eine CSV-Datei importiert, die Wörter enthält, die sich auf häufige Telefonprobleme beziehen. Mein Problem ist, dass es "zerschlagen" wird, aber wegen des Kommas wird es nicht "zerschlagen" sein.CSV-Datei in Python, die nicht die genauen Ergebnisse gibt

Also meine Frage ist, wie kann ich es das Wort ohne das Komma lesen lassen und mir keine Fehler oder irgendetwas geben?

Jede mögliche Hilfe geschätzt :)

import csv 

screen_list = {} 

with open('keywords.csv') as csvfile: 
readCSV = csv.reader(csvfile) 
for row in readCSV: 
    screen_list[row[0]] = row[1] 

print("Welcome to the troubleshooting program. Here we will help you solve your problems which you are having with your phone. Let's get started: ") 

what_issue = input("What is the issue with your phone?: ") 
what_issue = what_issue.split(' ') 

results = [(solution, screen_list[solution]) for solution in what_issue if solution in screen_list] 


if len(results) > 6: 
    print('Please only insert a maximum of 6 problems at once. ') 
else: 
    for solution, problems in results: 
     print('As you mentioned the word in your sentence which is: {}, the possible outcome solution for your problem is: {}'.format(solution, problems)) 

exit_program = input("Type 0 and press ENTER to exit/switch off the program.") 
+0

Bitte zeigen Sie Ihren eigenen Versuch, dies selbst zu tun und erklären, warum es nicht funktioniert. – martineau

Antwort

1

Ihr Problem ist, wenn Sie die what_issue Zeichenfolge split. Die beste Lösung ist hier einen regulären Ausdruck zu verwenden:

>>> import re 
>>> what_issue = "My screen is smashed, usb does not charge" 
>>> what_issue.split(' ') 
['My', 'screen', 'is', 'smashed,', 'usb', 'does', 'not', 'charge'] 

>>> print re.findall(r"[\w']+", what_issue) 
['My', 'screen', 'is', 'smashed', 'usb', 'does', 'not', 'charge'] 
0

Sie ein Thema in der Informatik tokenization genannt begegnet sind.

Es sieht so aus, als ob Sie alle nicht alphabetischen Zeichen aus der Benutzereingabe entfernen möchten. Eine einfache Möglichkeit ist die Verwendung der Bibliothek re von Python, die reguläre Ausdrücke unterstützt.

Hier ist ein Beispiel re verwenden, dies zu tun:

import re 
regex = re.compile('[^a-zA-Z]') 
regex.sub('', some_string) 

Zuerst haben wir einen regulären Ausdruck erstellen, der alle Zeichen übereinstimmt, die nicht Buchstaben. Dann verwenden wir diese Regex, um alle übereinstimmenden Zeichen in some_string durch eine leere Zeichenfolge zu ersetzen, die sie aus der Zeichenfolge löscht.

Eine schnelle Methode für die gleiche Sache wäre die Verwendung der isAlpha-Methode, die zu allen Python-Strings gehört, um die unerwünschten Zeichen herauszufiltern.

some_string = ''.join([char for char in some_string if char.isAlpha()]) 

Hier machen wir eine Liste, die die alphabetischen Zeichen von some_string enthält nur. Dann verbinden wir es miteinander, um eine neue Zeichenfolge zu erstellen, die wir some_string zuweisen.

Verwandte Themen