Home > front end >  splitting representative data by list of separators vs. acutal data
splitting representative data by list of separators vs. acutal data

Time:07-06

I have a string text and a list names

  • I want to split text every time an element of names occurs.

names = ['Mr. Mike, ADS', 'Monika, TFO', 'Peter, WQR']

text1 = ['Mrs. Monika, TFO goes shopping. Then she rides bike. Mike, ADS likes Pizza. Monika, TFO hates me.']

  • text does not always start with a names element.
  • The order of the elements within names is independent of their occurrence in text.
  • elements within names are unique but can occur multiple times throughout text. Therefore the output will have more lists than names has strings.
  • Ultimately, I want the output to be a list of lists where each split text slice corresponds to its element in names, that it was split by. The order of lists doesn't matter.
  • some of the elements of names are preceded by 'Mrs.' or 'Mr.' while only some of the corresponding matches in text are preceded by 'Mrs.' or 'Mr.'

def create_regex_string(name: List[str]) -> str:
    name_components = name.split()
    if len(name_components) == 1:
        return re.escape(name)
    salutation, *name = name_components
    return f"({re.escape(salutation)} )?{re.escape(' '.join(name))}"
    
regex_string = "|".join(create_regex_string(name) for name in names)
group_count = regex_string.count("(")   1
fragments = re.split(f"({regex_string})", text1)
if fragments:
    if not fragments[0] in names: 
        fragments = fragments[1:]
        result = [[name, text1.rstrip()] for name, text1 in zip(
            fragments[::group_count 1],
            fragments[group_count::group_count 1]
        ) if text1 is not None
    ]

print(result)
[['Monika, TFO', ' goes shopping. Then she rides bike.'], ['Mike, ADS', ' likes Pizza.'], ['Monika, TFO', " hates me.'"]]

code works for the exemplary data but when i use actual data (below) it results in empty list. Why?

names = ['Präsidentin Diezel', 'Vizepräsidentin Dr. Klaubert', 'Adams, BÜNDNIS 90/DIE GRÜNEN', 'Dr. Augsten, BÜNDNIS 90/DIE GRÜNEN', 'Barth, FDP', 'Baumann, SPD', 'Bergemann, CDU', 'Bergner, FDP', 'Blechschmidt, DIE LINKE', 'Döring, SPD', 'Emde, CDU', 'Fiedler, CDU', 'Dr. Hartung, DIE LINKE', 'Dr. Klaubert, DIE LINKE', 'Koppe, FDP', 'Krauße, CDU', 'Kummer, DIE LINKE', 'Kuschel, DIE LINKE', 'Leukefeld, DIE LINKE', 'Marx, SPD', 'Meyer, BÜNDNIS 90/DIE GRÜNEN', 'Mühlbauer, SPD', 'Dr. Pidde, SPD', 'Primas, CDU', 'Renner, DIE LINKE', 'Rothe-Beinlich, BÜNDNIS 90/DIE GRÜNEN', 'Schubert, BÜNDNIS 90/DIE GRÜNEN', 'Wolf, DIE LINKE', 'Prof. Dr. Deufel, Staatssekretär', 'Prof. Dr. Huber, Innenminister', 'Matschie, Minister für Bildung, Wissenschaft und Kultur', 'Dr. Poppenhäger, Justizminister', 'Reinholz, Minister für Landwirtschaft, Forsten, Umwelt und Naturschutz', 'Dr. Spaeth, Staatssekretär', 'Dieter Althaus, CDU', 'Johanna Arenhövel, CDU', 'Hans-Henning Axthelm, CDU', 'Peter Backhaus, FDP', 'Adalbert Bauch, CDU', 'Willibald Böck, CDU', 'Jürgen Bohn, FDP', 'Peter Bonitz, CDU', 'Matthias Büchner, NF', 'Hans-Jörg Dannenberg, CDU', 'Peter Dietl, PDS', 'Ekkehardt Dietze, SPD', 'Hans-Jürgen Döring, SPD', 'Josef Duchač, CDU', 'Manfred Eckstein, CDU', 'Irene Ellenberger, SPD', 'Volker Emde, CDU', 'Andreas Enkelmann, SPD', 'Friedhelm Farthmann, SPD', 'Ulrich Fickel, FDP', 'Wolfgang Fiedler, CDU', 'Peter Friedrich, SPD', 'Siegfried Geißler, NF', 'Cornelia Geithner, PDS', 'Heiko Gentzel, SPD', 'Michael Gerstenberger, PDS', 'Christine Grabe, GRÜNE', 'Werner Griese, SPD', 'Maria-Elisabeth Grosse, FDP', 'Werner Grünert, CDU', 'Peter Gundermann, SPD', 'Hans-Peter Häfner, CDU', 'Roland Hahnemann, PDS', 'Achim Häßler, FDP', 'Manfred Heise, CDU', 'Edda Heymel, SPD', 'Klaus Höpcke, PDS', 'Konrad Illing, CDU', 'Siegfried Jaschke, CDU', 'Jörg Kallenbach, CDU', 'Berthold Klein, SPD', 'Andreas Kniepert, FDP', 'Joachim Koch, PDS', 'Johanna Köhler, CDU', 'Eckehard Kölbel, CDU', 'Winfried Kothe, CDU', 'Michael Krapp, CDU', 'Thomas Kretschmer, CDU', 'Christine Lieberknecht, CDU', 'Frieder Lippmann, SPD', 'Reinhard Lotholz, CDU', 'Dieter Mäde, SPD', 'Klaus Mehle, SPD', 'Roland Meyer, CDU', 'Walter Möbus, CDU', 'Olaf Möller, GRÜNE', 'Gottfried Müller, CDU', 'Bernd Müller-Pathle, CDU', 'Winfried Neumann, CDU', 'Norbert Otto, CDU', 'Ralf Päsler, GRÜNE', 'Frank-Michael Pietzsch, CDU', 'Günter Pohl, SPD', 'Jörg Pöse, PDS', 'Andreas Preller, SPD', 'Egon Primas, CDU', 'Ingrid Raber, SPD', 'Helmut Rieth, SPD', 'Matthias Ritter, CDU', 'Christine Rudolph, SPD', 'Fritz Schröter, CDU', 'Gerd Schuchardt, SPD', 'Horst Schulz, CDU', 'Peter Schütz, CDU', 'Jörg Schwäblein, CDU', 'Harald Seidel, SPD', 'Hartmut Sieckmann, FDP', 'Volker Sklenar, CDU', 'Andreas Sonntag, CDU', 'Manfred Spieß, CDU', 'Harald Stauch, CDU', 'Axel Stelzner, CDU', 'Olaf Stepputat, FDP', 'Annett Stiebritz, FDP', 'Tamara Thierbach, PDS', 'Andreas Trautvetter, CDU', 'Werner Ulbrich, CDU', 'Hans-Jürgen Wagner, CDU', 'Dietmar Werner, CDU', 'Kurt Weyh, SPD', 'Gerhard Wien, DJ', 'Bernd Wolf, CDU', 'Gert Wunderlich, CDU', 'Klaus Zeh, CDU', 'Gabi Zimmer, PDS', 'Rosemarie Bechthum, SPD', 'Almuth Beck, PDS', 'Dagmar Becker, SPD', 'Klaus Borck, SPD', 'Detlev Braasch, CDU', 'Heinrich Dietz, CDU', 'Birgit Diezel, CDU', 'Steffen Dittes, PDS', 'Sabine Doht, SPD', 'Ursula Fischer, PDS', 'Klaus Goedecke, SPD', 'Jochen Greiner-Well, SPD', 'Günter Grüner, CDU', 'Johann Günter Harrer, PDS', 'Carmen Jähnke, SPD', 'Steffen Kachel, PDS', 'Birgit Klaubert, PDS', 'Christine Ursula Klaus, SPD', 'Christian Köckert, CDU', 'Horst Krauße, CDU', 'Dagmar Künast, SPD', 'Benno Lemke, PDS', 'Alfred Müller, SPD', 'Christiane Neudert, PDS', 'Cornelia Nitzpon, PDS', 'Birgit Pelke, SPD', 'Werner Pidde, SPD', 'Sieghardt Rydzewski, SPD', 'Konrad Scheringer, PDS', 'Gottfried Schugens, CDU', 'Franz Schuster, CDU', 'Dieter Strödter, SPD', 'Christina Tasch, CDU', 'Bernhard Vogel, CDU', 'Bärbel Vopel, CDU', 'Roland Wanitschka, PDS', 'Siegfried Wetzel, CDU', 'Heide Wildauer, PDS', 'Christine Zitzmann, CDU', 'Gustav Bergemann, CDU', 'Gerhard Botz, SPD', 'Werner Buse, PDS', 'Christian Carius, CDU', 'Richard Dewes, SPD', 'Jens Goebel, CDU', 'Manfred Grob, CDU', 'Evelin Groß, CDU', 'Petra Heß, SPD', 'Michael Heym, CDU', 'Uwe Höhn, SPD', 'Mike Huster, PDS', 'Karin Kaschuba, PDS', 'Ingrid Kraushaar, CDU', 'Otto Kretschmer, SPD', 'Klaus von der Krone, CDU', 'Tilo Kummer, PDS', 'Annette Lehmann, CDU', 'Harald Michel, CDU', 'Mike Mohring, CDU', 'Maik Nothnagel, PDS', 'Michael Panse, CDU', 'Volker Pöhler, CDU', 'Bodo Ramelow, PDS', 'Volker Schemmel, SPD', 'Heidrun Sedlacik, PDS', 'Reyk Seela, CDU', 'Michaele Sojka, PDS', 'Isolde Stangner, PDS', 'Elisabeth Wackernagel, CDU', 'Wolfgang Wehner, CDU', 'Katja Wolf, PDS', 'Gabriele Zimmer, PDS', 'Matthias Bärwolff, Die Linke', 'Rolf Baumann, SPD', 'Andreas Bausewein, SPD', 'Barbara Bechmann, CDU', 'Sabine Berninger, Die Linke', 'André Blechschmidt, Die Linke', 'Ralf Bornkessel, CDU', 'Werner Buse, Die Linke', 'Monika Döllstedt, Die Linke', 'David-Christian Eckardt, SPD', 'Antje Ehrlich-Strathausen, SPD', 'Petra Enders, Die Linke', 'Ruth Fuchs, Die Linke', 'Michael Gerstenberger, Die Linke', 'Christian Gumprecht, CDU', 'Gerhard Günther, CDU', 'Roland Hahnemann, Die Linke', 'Ralf Hauboldt, Die Linke', 'Dieter Hausold, Die Linke', 'Susanne Hennig, Die Linke', 'Gudrun Holbe, CDU', 'Elke Holzapfel, CDU', 'Mike Huster, Die Linke', 'Margit Jung, Die Linke', 'Ralf Kalich, Die Linke', 'Karin Kaschuba, Die Linke', 'Birgit Klaubert, Die Linke', 'Peter D. Krause, CDU', 'Jörg Kubitzki, Die Linke', 'Tilo Kummer, Die Linke', 'Frank Kuschel, Die Linke', 'Benno Lemke, Die Linke', 'Ina Leukefeld, Die Linke', 'Christoph Matschie, SPD', 'Beate Meißner, CDU', 'Kersten Naumann, Die Linke', 'Maik Nothnagel, Die Linke', 'Eckhard Ohl, SPD', 'Walter Pilger, SPD', 'Bodo Ramelow, Die Linke', 'Jürgen Reinholz, CDU', 'Wieland Rose, CDU', 'Johanna Scheringer-Wright, Die Linke', 'Dagmar Schipanski, CDU', 'Michael Schneider, CDU', 'Hartmut Schubert, SPD', 'Heidrun Sedlacik, Die Linke', 'Diana Skibbe, Die Linke', 'Michaele Sojka, Die Linke', 'Carola Stauche, CDU', 'Heike Taubert, SPD', 'Tamara Thierbach, Die Linke', 'Marion Walsmann, CDU', 'Gabriela Weißbrodt, CDU', 'Katja Wolf, Die Linke', 'Henry Worm, CDU', 'Dirk Adams, GRÜNE', 'Frank Augsten, GRÜNE', 'Uwe Barth, FDP', 'Matthias Bärwolff, DIE LINKE', 'Dirk Bergner, FDP', 'Sabine Berninger, DIE LINKE', 'André Blechschmidt, DIE LINKE', 'Petra Enders, DIE LINKE', 'Thomas Hartung, SPD', 'Ralf Hauboldt, DIE LINKE', 'Dieter Hausold, DIE LINKE', 'Manfred Hellmann, DIE LINKE', 'Susanne Hennig, DIE LINKE', 'Matthias Hey, SPD', 'Franka Hitzing, FDP', 'Mike Huster, DIE LINKE', 'Margit Jung, DIE LINKE', 'Ralf Kalich, DIE LINKE', 'Regine Kanis, SPD', 'Karin Kaschuba, DIE LINKE', 'Birgit Keller, DIE LINKE', 'Jörg Kellner, CDU', 'Thomas L. Kemmerich, FDP', 'Birgit Klaubert, DIE LINKE', 'Katharina König-Preuss, DIE LINKE', 'Marian Koppe, FDP', 'Knut Korschewsky, DIE LINKE', 'Maik Kowalleck, CDU', 'Jörg Kubitzki, DIE LINKE', 'Tilo Kummer, DIE LINKE', 'Frank Kuschel, DIE LINKE', 'Wolfgang Lemb, SPD', 'Ina Leukefeld, DIE LINKE', 'Ute Lukasch, DIE LINKE', 'Gudrun Lukin, DIE LINKE', 'Dorothea Marx, SPD', 'Peter Metz, SPD', 'Carsten Meyer, GRÜNE', 'Dirk Möller, DIE LINKE', 'Eleonore Mühlbauer, SPD', 'Maik Nothnagel, DIE LINKE', 'Bodo Ramelow, DIE LINKE', 'Lutz Recknagel, FDP', 'Martina Renner, DIE LINKE', 'Astrid Rothe-Beinlich, GRÜNE', 'Claudia Scheerschmidt, SPD', 'Manfred Scherer, CDU', 'Johanna Scheringer-Wright, DIE LINKE', 'Jennifer Schubert, GRÜNE', 'Heidrun Sedlacik, DIE LINKE', 'Anja Siegesmund, GRÜNE', 'Diana Skibbe, DIE LINKE', 'Michaele Sojka, DIE LINKE', 'Gisela Sparmberg, FDP', 'Karola Stange, DIE LINKE', 'Heinz Untermann, FDP', 'Mario Voigt, CDU', 'Frank Weber, SPD', 'Katja Wolf, DIE LINKE', 'Gerold Wucherpfennig, CDU', 'Sabine Berninger, LINKE', 'André Blechschmidt, LINKE', 'Andreas Bühl, CDU', 'Steffen Dittes, LINKE', 'Kati Engel, LINKE', 'Kristin Floßmann, CDU', 'Jörg Geibert, CDU', 'Siegfried Gentele, fraktionslos', 'Stefan Gruhner, CDU', 'Ronald Hande, LINKE', 'Steffen Harzer, LINKE', 'Dieter Hausold, LINKE', 'Oskar Helmerich, SPD', 'Madeleine Henfling, GRÜNE', 'Jörg Henke, AfD', 'Susanne Hennig-Wellsow, LINKE', 'Corinna Herold, AfD', 'Christian Herrgott, CDU', 'Björn Höcke, AfD', 'Margit Jung, LINKE', 'Ralf Kalich, LINKE', 'Olaf Kießling, AfD', 'Thadäus König, CDU', 'Katharina König-Preuss, LINKE', 'Roberto Kobelt, GRÜNE', 'Knut Korschewsky, LINKE', 'Rainer Kräuter, LINKE', 'Jens Krumpe, fraktionslos', 'Jörg Kubitzki, LINKE', 'Tilo Kummer, LINKE', 'Frank Kuschel, LINKE', 'Diana Lehmann, SPD', 'Ina Leukefeld, LINKE', 'Christina Liebetrau, CDU', 'Ute Lukasch, LINKE', 'Gudrun Lukin, LINKE', 'Marcus Malsch, CDU', 'Iris Martin-Gehl, LINKE', 'Katja Mitteldorf, LINKE', 'Stefan Möller, AfD', 'Wiebke Muhsal, AfD', 'Anja Müller, LINKE', 'Olaf Müller, GRÜNE', 'Babett Pfefferlein, GRÜNE', 'Jürgen Reinholz, fraktionslos', 'Klaus Rietschel, fraktionslos', 'Marion Rosin, CDU', 'Thomas Rudy, AfD', 'Christian Schaft, LINKE', 'Johanna Scheringer-Wright, LINKE', 'Simone Schulze, CDU', 'Diana Skibbe, LINKE', 'Karola Stange, LINKE', 'Jörg Thamm, CDU', 'Christian Tischner, CDU', 'Marit Wagler, LINKE', 'Raymond Walk, CDU', 'Frank Warnecke, SPD', 'Herbert Wirkner, CDU', 'Torsten Wolf, LINKE', 'Christoph Zippel, CDU', 'Stephan Brandner, AfD', 'Mike Huster, LINKE', 'Birgit Klaubert, LINKE', 'Bodo Ramelow, LINKE', 'René Aust, AfD', 'Franziska Baum, FDP', 'Patrick Beier, LINKE', 'Ute Bergner, fraktionslos', 'Sascha Bilay, LINKE', 'Torben Braga, AfD', 'Jens Cotta, AfD', 'Torsten Czuppon, AfD', 'Cordula Eger, LINKE', 'Karlheinz Frosch, AfD', 'Markus Gleichmann, LINKE', 'Thomas Gottweiss, CDU', 'Thomas Gröger, AfD', 'Birger Gröning, fraktionslos', 'Lena Saniye Güngör, LINKE', 'Martin Henkel, CDU', 'Nadine Hoffmann, AfD', 'Denny Jankowski, AfD', 'Birgit Keller, LINKE', 'Cornelia Klisch, SPD',
         'Tosca Kniese, fraktionslos', 'Dieter Laudenbach, AfD', 'Wolfgang Lauerwald, AfD', 'Lutz Liebscher, SPD', 'Katja Maurer, LINKE', 'Janine Merz, SPD', 'Denny Möller, SPD', 'Robert-Martin Montag, FDP', 'Ringo Mühlmann, AfD', 'Ralf Plötner, LINKE', 'Daniel Reinhardt, LINKE', 'Stefan Schard, CDU', 'Andreas Schubert, LINKE', 'Lars Schütze, fraktionslos', 'Robert Sesselmann, AfD', 'Uwe Thrum, AfD', 'Stephan Tiesler, CDU', 'Jonas Urbach, CDU', 'Donata Vogtschmidt, LINKE', 'Laura Wahl, GRÜNE', 'Philipp Weltzien, LINKE', 'Michael Kaufmann, AfD', 'Georg Maier, SPD', 'Wolfgang Tiefensee, SPD', 'Heike Werner, LINKE', 'Josef Duchač (bis 5. Februar 1992), Ministerpräsident', 'Ulrich Fickel, Stellvertreter des Ministerpräsidenten', 'Willibald Böck, Innenminister', 'Christine Lieberknecht, Kultusministerin', 'Hans-Joachim Jentsch, Justizminister; ab 18. Juni 1991: Minister für Justiz, Bundes- und Europaangelegenheiten', 'Klaus Zeh, Finanzminister', 'Hans-Jürgen Schultz, Minister für Wirtschaft und Technik', 'Jürgen Bohn, Minister für Wirtschaft und Technik', 'Hans-Henning Axthelm, Minister für Soziales und Gesundheit', 'Volker Sklenar, Minister für Landwirtschaft und Forsten', 'Hartmut Sieckmann, Umweltminister', 'Ulrich Fickel, Minister für Wissenschaft und Kunst', 'Jochen Lengemann, Minister für besondere Aufgaben', 'Bernhard Vogel, Ministerpräsident', 'Franz Schuster, Minister in der Staatskanzlei', 'Andreas Trautvetter, Minister in der Staatskanzlei', 'Franz Schuster, Innenminister', 'Dieter Althaus, Kultusminister', 'Hans-Joachim Jentsch, Justizminister', 'Jürgen Bohn, Minister für Wirtschaft und Verkehr', 'Frank-Michael Pietzsch, Minister für Soziales und Gesundheit', 'Hartmut Sieckmann, Minister für Umwelt und Landesplanung', 'Christine Lieberknecht, Ministerin für Bundes- und Europaangelegenheiten', 'Gerd Schuchardt, Stellvertreter des Ministerpräsidenten', 'Gerd Schuchardt, Minister für Wissenschaft, Forschung und Kultur', 'Christine Lieberknecht, Ministerin für Bundesangelegenheiten in der Staatskanzlei', 'Richard Dewes, Innenminister', 'Otto Kretschmer, Minister für Justiz und Europaangelegenheiten', 'Andreas Trautvetter, Finanzminister', 'Franz Schuster, Minister für Wirtschaft und Infrastruktur', 'Irene Ellenberger, Ministerin für Soziales und Gesundheit', 'Volker Sklenar, Minister für Landwirtschaft, Naturschutz und Umwelt', 'Andreas Trautvetter, Stellvertreter des Ministerpräsidenten', 'Jürgen Gnauck, Minister für Bundes- und Europaangelegenheiten und Chef der Staatskanzlei', 'Christian Köckert , Innenminister', 'Andreas Trautvetter , Innenminister', 'Michael Krapp, Kultusminister', 'Andreas Birkmann , Justizminister', 'Karl Heinz Gasser , Justizminister', 'Andreas Trautvetter , Finanzminister(in)', 'Birgit Diezel , Finanzminister(in)', 'Franz Schuster, Minister für Wirtschaft, Arbeit und Infrastruktur', 'Frank-Michael Pietzsch, Minister für Soziales, Familie und Gesundheit', 'Dagmar Schipanski, Ministerin für Wissenschaft, Forschung und Kunst', 'Dieter Althaus, Ministerpräsident', 'Andreas Trautvetter, Innenminister', 'Hans Kaiser, Minister für Bundes- und Europaangelegenheiten', 'Hans Kaiser, Chef der Staatskanzlei', 'Karl Heinz Gasser, Justizminister', 'Birgit Diezel, Finanzministerin', 'Jürgen Reinholz, Minister für Wirtschaft, Arbeit und Infrastruktur', 'Klaus Zeh, Minister für Soziales, Familie und Gesundheit', 'Dieter Althaus , Ministerpräsident', 'Birgit Diezel , Stellvertreter(in) des Ministerpräsidenten', 'Volker Sklenar , Stellvertreter(in) des Ministerpräsidenten', 'Gerold Wucherpfennig , Minister für Bundes- und Europaangelegenheiten und Chef der Staatskanzlei', 'Klaus Zeh , Minister für Bundes- und Europaangelegenheiten und Chef der Staatskanzlei', 'Karl Heinz Gasser , Innenminister', 'Manfred Scherer , Innenminister', 'Jens Goebel , Kultusminister', 'Bernward Müller , Kultusminister', 'Harald Schliemann , Justizminister(in)', 'Marion Walsmann , Justizminister(in)', 'Birgit Diezel , Finanzministerin', 'Jürgen Reinholz, Minister für Wirtschaft, Technologie und Arbeit', 'Klaus Zeh , Minister(in) für Soziales, Familie und Gesundheit', 'Christine Lieberknecht , Minister(in) für Soziales, Familie und Gesundheit', 'Andreas Trautvetter , Minister für Bau und Verkehr; ab 8. Mai 2008: Minister für Bau, Landesentwicklung und Medien', 'Gerold Wucherpfennig , Minister für Bau und Verkehr; ab 8. Mai 2008: Minister für Bau, Landesentwicklung und Medien', 'Christine Lieberknecht, Ministerpräsidentin', 'Christoph Matschie, Stellvertreter der Ministerpräsidentin', 'Jürgen Schöning , Minister(in) für Bundes- und Europaangelegenheiten und Chef(in) der Staatskanzlei', 'Marion Walsmann , Minister(in) für Bundes- und Europaangelegenheiten und Chef(in) der Staatskanzlei', 'Jürgen Gnauck , Minister(in) für Bundes- und Europaangelegenheiten und Chef(in) der Staatskanzlei', 'Peter M. Huber , Innenminister', 'Jörg Geibert , Innenminister', 'Christoph Matschie, Minister für Bildung, Wissenschaft und Kultur', 'Holger Poppenhäger, Justizminister', 'Marion Walsmann , Finanzminister(in)', 'Wolfgang Voß , Finanzminister(in)', 'Matthias Machnig , Minister für Wirtschaft, Arbeit und Technologie', 'Uwe Höhn , Minister für Wirtschaft, Arbeit und Technologie', 'Heike Taubert, Ministerin für Soziales, Familie und Gesundheit', 'Jürgen Reinholz, Minister für Landwirtschaft, Forsten, Umwelt und Naturschutz', 'Christian Carius , Minister für Bau, Landesentwicklung und Verkehr', 'Bodo Ramelow, Ministerpräsident', 'Heike Taubert, Erste Stellvertreterin des Ministerpräsidenten', 'Heike Taubert, Finanzministerin', 'Anja Siegesmund, Zweite Stellvertreterin des Ministerpräsidenten', 'Anja Siegesmund, Ministerin für Umwelt, Energie und Naturschutz', 'Benjamin-Immanuel Hoff, Minister für Kultur, Bundes- und Europaangelegenheiten und Chef der Staatskanzlei', 'Holger Poppenhäger, Minister für Inneres und Kommunales', 'Georg Maier, Minister für Inneres und Kommunales', 'Birgit Klaubert, Minister(in) für Bildung, Jugend und Sport', 'Helmut Holter, Minister(in) für Bildung, Jugend und Sport', 'Dieter Lauinger, Minister für Migration, Justiz und Verbraucherschutz', 'Wolfgang Tiefensee, Minister für Wirtschaft, Wissenschaft und Digitale Gesellschaft', 'Heike Werner, Ministerin für Arbeit, Soziales, Gesundheit, Frauen und Familie', 'Birgit Keller, Minister(in) für Infrastruktur und Landwirtschaft', 'Benjamin-Immanuel Hoff , Minister(in) für Infrastruktur und Landwirtschaft', 'Wolfgang Tiefensee, Erster Stellvertreter des Ministerpräsidenten', 'Georg Maier, Erster Stellvertreter des Ministerpräsidenten', 'Anja Siegesmund, Zweite Stellvertreterin des Ministerpräsidenten', 'Benjamin-Immanuel Hoff, Minister(in) für Infrastruktur und Landwirtschaft', 'Susanna Karawanskij, Minister(in) für Infrastruktur und Landwirtschaft', 'Helmut Holter, Minister für Bildung, Jugend und Sport', 'Dirk Adams, Minister für Migration, Justiz und Verbraucherschutz']
text1 = 'Präsidentin Diezel: Meine der Abgeordnete Recknagel, eordnete Metz. Als  gemeldet Abgeordneter Dirk Adams, BÜNDNIS 90/DIE GRÜNEN. Abgeordneter Adams, BÜNDNIS 90/DIE GRÜNEN: Sehr Thema Präsidentin Diezel: Vielen Abgeordneter Adams. Als Abgeordnete Bergemann, CDU-Fraktion. Abgeordneter Bergemann, CDU: Frau Präsidentin In Präsidentin Diezel: Danke, Frau Abgeordnete Renner. SPD-Fraktion Frau Abgeordnete Marx. Abgeordnete Marx, SPD: Sehr unbekannt Präsidentin Diezel: Danke, Frau Abgeordnete Marx. Als Abgeordnete Bergner, FDP- Fraktion. Abgeordneter Bergner, FDP: Sehr geehrte Tobak. Abgeordneter Fiedler, CDU: geehrten (Zwischenruf Prof. Dr. Huber, Innenmi- nister: Herr Simitis.) Ich glaube Präsidentin Diezel: Vielen Dank. Ich habe noch eine . Herr Adams, bitte. (Zwischenruf Abg. Barth, FDP: In Jahren) Zum Abgeordneter Adams, BÜNDNIS 90/DIE GRÜNEN: Vielen Dank. Frau Präsidentin, gehen. Vielen Dank. (Beifall DIE LINKE, BÜNDNIS 90/DIE GRÜNEN) Präsidentin Diezel: VielenHerr Abgeordneter. Redemeldungen aus den tte, Herr Minister Dr. Poppenhäger. Dr. Poppenhäger, Justizminister: Sehr geehrte Frau Präsidentin, sehr neten, lassen Präsidentin Diezel: Vielen Dank, Herr Minister Dr. Poppenhäger. Gibt es weitere Abgeordneter Kuschel, DIE LINKE: Jetzt es. Präsidentin Diezel: Herr Abgeordneter, ich bitte Sie, zum kom- men. Abgeordneter Kuschel, DIE LINKE: - ja, danke - nke. (Beifall DIE LINKE) Präsidentin Diezel: Danke, Herr Abgeordneter Kuschel. Als Nächste SPD-Fraktion Frau Abgeordnete Mühlbauer. Abgeordnete Mühlbauer, SPD: Sehr geehrte Frau Präsidentin, sehr geehrte Damen und  (Beifall BÜNDNIS 90/DIE GRÜNEN) Präsidentin Diezel: Vielen Dank. Eine noch. Ich sehe ng mehr. Herr Kuschel, Minute. Abgeordneter Kuschel, DIE LINKE: Frau Präsidentin, mein sind. Präsidentin Diezel: Herr Kuschel, komme Ende. Abgeordneter Kuschel, DIE LINKE:  redet. Präsidentin Diezel: Herr Pof. Huber, Wort. Prof. Dr. Huber, Innenminister: Frau Präsidentin, meine (Zwischenruf Abg. Ramelow, DIE LINKE: Das missinterpretieren Sie.) Okay, (Zwischenruf Abg. Ramelow, DIE LINKE: Man darf Gesetze auch hinterfragen.) Gesetze  (Zwischenruf Abg. Berninger, DIE LINKE: Wir haben ja Vorschläge.) Ich auch Danke. (Beifall CDU, SPD) 476 Präsidentin Diezel: Danke schön, Herr Innenminister Prof. Huber. Er zehn Präsidentin Diezel: Vielen Dank, Herr Abgeordneter Baumann. Für die Fraktion BÜNDNIS 90/DIE GRÜNEN hat das Wort Frau Abgeordnete Schubert. Abgeordnete Schubert, BÜNDNIS 90/DIE GRÜNEN: Frau Präsidentin, sehr verhandelt. Vielen Dank. (Beifall DIE GRÜNEN) Präsidentin Diezel: Danke, Frau Abgeordnete Schubert. Für Herr Abgeordneter Krauße. Abgeordneter Krauße, CDU: Frau Präsidentin, versprechen. Vizepräsidentin Dr. Klaubert: Es gibt Abgeordneter Kuschel, DIE LINKE: Danke, Frau Vizepräsidentin Dr. Klaubert: Frau Abgeordnete Wolf, Abgeordnete Wolf, DIE LINKE: Ich habe die Prof. Dr. Deufel, Staatssekretär: Die liste Vizepräsidentin Dr. Klaubert: Nachfragen. Frau Abgeordnete Ren- ner, bitte. Abgeordnete Renner, DIE LINKE: Herr Minister, anzusehen. Prof. Dr. Huber, Innenminister: Frau Abgeordnete Renner, ich. Vizepräsidentin Dr. Klaubert: Es Abend. ' 

def create_regex_string(name: List[str]) -> str:
    name_components = name.split()
    if len(name_components) == 1:
        return re.escape(name)
    salutation, *name = name_components
    return f"({re.escape(salutation)} )?{re.escape(' '.join(name))}"
        

regex_string = "|".join(create_regex_string(name) for name in names)
group_count = regex_string.count("(")   1
fragments = re.split(f"({regex_string})", text1)
if fragments:
    if not fragments[0] in names: 
        fragments = fragments[1:]
        result = [
            [name, text1.rstrip()]
            for name, text1 in zip(
                fragments[::group_count 1],
                fragments[group_count::group_count 1]
            )
            if text1 is not None
        ]

print(result)
[]

CodePudding user response:

You should make the optional group non-capturable in create_regex_string by changing the last line to

return f"(?:{re.escape(salutation)} )?{re.escape(' '.join(name))}"

Also, you should avoid additional variables like group_count. Replace the last part of code with this.

fragments = re.split(f"({regex_string})", text1)
if fragments and fragments[0] not in names:
    fragments = fragments[1:]
    result = [[fragments[i], fragments[i   1].rstrip()] for i in range(0, len(fragments), 2)]
    print(result)
  • Related