Python-Extrakt-Satz mit Wort

7

Ich versuche, alle Sätze, die ein bestimmtes Wort enthalten, aus einem Text zu extrahieren.

%Vor%

aber es gibt mir zurück:

%Vor%

anstelle von:

%Vor%

Irgendwelche Hilfe bitte?

    
user2187202 16.04.2013, 09:03
quelle

6 Antworten

9
%Vor%     
Kent 16.04.2013, 09:09
quelle
16

Keine Notwendigkeit für Regex:

%Vor%     
jamylak 16.04.2013 09:07
quelle
7
%Vor%

Beachten Sie jedoch, dass die @% jamylak split -basierte Lösung schneller ist:

%Vor%

Die Geschwindigkeitsdifferenz ist bei größeren Strings geringer, aber immer noch signifikant:

%Vor%     
unutbu 16.04.2013 09:07
quelle
3

Sie können str.split verwenden,

%Vor%     
Adem Öztaş 16.04.2013 09:06
quelle
2
%Vor%

Diese Zeile ist ein bisschen seltsam; Warum verketten Sie so viele getrennte Strings? Du könntest einfach r '.. + apple. +.'.

benutzen

Wie auch immer, das Problem mit Ihrem regulären Ausdruck ist seine Greedy-Ness. Standardmäßig passt x+ x so oft wie möglich an. Ihr .+ wird also so viele Zeichen wie möglich ( beliebige Zeichen) enthalten. einschließlich Punkte und apple s.

Was Sie stattdessen verwenden möchten, ist ein nicht-gieriger Ausdruck; Sie können dies normalerweise tun, indem Sie am Ende ein ? hinzufügen: .+? .

Dadurch erhalten Sie das folgende Ergebnis:

%Vor%

Wie du siehst, bekommst du nicht mehr beide Applesätze, sondern immer noch Me too. . Das liegt daran, dass Sie immer noch den . nach dem apple zuordnen, was es unmöglich macht, auch den folgenden Satz nicht zu erfassen.

Ein funktionierender regulärer Ausdruck wäre dies: r'\.[^.]*?apple[^.]*?\.'

Hier sehen Sie nicht irgendwelche Zeichen, sondern nur die Zeichen, die selbst keine Punkte sind. Wir erlauben auch keine Übereinstimmung mit irgendwelchen Zeichen (weil nach dem apple im ersten Satz keine Nicht-Punkt-Zeichen vorhanden sind). Die Verwendung dieses Ausdrucks führt dazu:

%Vor%     
poke 16.04.2013 09:11
quelle
0

Offensichtlich ist das fragliche Beispiel extract sentence containing substring anstelle von extract sentence containing word . Wie man das extract sentence containing word Problem durch Python löst, ist wie folgt:

Ein Wort kann am Anfang | Ende des Satzes stehen. Nicht auf das Beispiel in der Frage beschränkt, würde ich eine allgemeine Funktion zur Suche eines Wortes in einem Satz bieten:

%Vor%

beschränkt auf das Beispiel in der Frage, können wir lösen wie:

%Vor%

Die entsprechende Ausgabe ist:

%Vor%     
YJ. Yang 13.12.2017 09:00
quelle

Tags und Links