Sehr schön, allerdings ist any() IMHO falsch und nicht das was der OP wollte. Es sollen ja eben alle Wörter in der Eingabe vorkommen.BlackJack hat geschrieben:Schöner wäre es nicht ``in`` und `find()` zu mischen, die unnötigen eckigen Klammern wegzulassen und gleich die richtige Funktion zu verwenden, statt `any()` mit diversen "Negationen" mit `all()` nachbasteln zu wollen:
Befehle aus txt Datei lesen
@Baconman: `actions` ist das selbe wie in /me's Quelltext eine Liste mit Tupeln aus Wörtern und einer dazu passenden Anwort.
@/me: Aber dann braucht man in meinem Schnipsel doch nur `any()` durch `all()` ersetzen. Dann verstehe ich noch weniger warum Deins so kompliziert geschrieben ist!?
@/me: Aber dann braucht man in meinem Schnipsel doch nur `any()` durch `all()` ersetzen. Dann verstehe ich noch weniger warum Deins so kompliziert geschrieben ist!?
Hab jetzt versucht den Schnipsel einzubinden!
Leider ohne Erfolg... es wäre nett wenn mir jemand noch erklären könnte was ich falsch mache.
Leider ohne Erfolg... es wäre nett wenn mir jemand noch erklären könnte was ich falsch mache.
Code: Alles auswählen
if data[1] =='privmsg':
filedata = open('Befehle.txt', 'r')
actions = []
for line in filedata:
parts = line.split('===')
actions.append((parts[0].split(), parts[1]))
words = parts[0]
response = parts[1]
for words, response in actions:
if all(word in data for word in words):
irc.send('PRIVMSG ' + channel + ' :' + response)
@Baconman: Also mindestens das ``word in data`` wird wohl so nicht funktionieren. Überlege Dir mal an was `data` gebunden ist, und warum da wahrscheinlich nie `word` drin vorkommen wird.
Ganz einfach. Ich war irgendwie auf eine Liste fixiert und habe deshalb einen verkorksten Ansatz gewählt.BlackJack hat geschrieben:@/me: Aber dann braucht man in meinem Schnipsel doch nur `any()` durch `all()` ersetzen. Dann verstehe ich noch weniger warum Deins so kompliziert geschrieben ist!?
Code: Alles auswählen
if data[1] =='privmsg':
filedata = open('Befehle.txt', 'r')
actions = []
for line in filedata:
parts = line.split('===')
actions.append((parts[0].split(), parts[1]))
words = parts[0]
response = parts[1]
print words
for words, response in actions:
if all(words in text for words in words):
irc.send('PRIVMSG ' + channel + ' :' + response)
Sobald ich aber die zweite Zeile versuche passiert etwas komisches:
Das "/r" ist ein Fehler meinerseits. Das ist egal. Der Teil der mit Pong anfängt soll eigentlich den Ping des Servers beantworten. "was?? ?? ??" soll eigentlich "lala fick" beantworten. Wie man sieht klappt es nicht.
Ich denke man merkt langsam wie oberflächlich ich Python beherrsche
Okay, Ich wusste nicht wie streng ihr hier seid und das Ich nicht mal meine eigenen Beispiele nehmen kann Es sind immerhin nur Wörter. Aber ehe hier sich jetzt noch jemand darüber aufregt bitte ich das zu entschuldigen.
Ich hoffe einer von euch hilft mir trotzdem!
Ich hoffe einer von euch hilft mir trotzdem!