So ersetzen Sie alle Instanzen eines Strings durch einen anderen indizierten String Python

arabian_albert

Diese Frage ist mit meinem unzureichenden Englisch etwas schwierig zu artikulieren, aber ich werde mein Bestes geben.

Ich habe ein Verzeichnis von XML-Dateien, jede Datei enthält XML wie:

<root>
    <fields>
        <field>
            <description/>
            <region id="Number.T2S366_R_487" page="1"/>
        </field>
        <field>
            <description/>
            <region id="Number.T2S366_R_488.`0" page="1"/>
            <region id="String.T2S366_R_488.`1" page="1"/>
        </field>
    </fields>
</root>

Ich möchte die dot, tick, numberZeichenfolgen, die die Notation wie .`0 enthalten, durch eine Indexnotation wie [0], [1], [2], ... usw. ersetzen.

Die transformierte XML-Nutzlast sollte also wie folgt aussehen:

<root>
    <fields>
        <field>
            <description/>
            <region id="Number.T2S366_R_487" page="1"/>
        </field>
        <field>
            <description/>
            <region id="Number.T2S366_R_488[0]" page="1"/>
            <region id="String.T2S366_R_488[1]" page="1"/>
        </field>
    </fields>
</root>

Wie kann ich dies mit Python erreichen? Dies scheint ziemlich einfach zu sein, wenn man Regex verwendet, aber das wäre schwierig für ein Verzeichnis von Dateien, die mehrere Dateien enthalten. Ich würde gerne eine Implementierung mit Python 3.x sehen, während ich es lerne.

Imran

In Python können Sie mit os.listdir alle Dateien in Ihrem Verzeichnis durchlaufen und mit fileinput Ersetzungen vornehmen :

import os
import fileinput

path = '/home/arabian_albert/'
for f in os.listdir(path):
    with fileinput.FileInput(f, inplace=True, backup='.bak') as file:
        for line in file:
            print(re.sub(r'\.`(\d+)', r'\[\1\]', line), end='')

Sie sollten dies jedoch über die Befehlszeile mit sed in Betracht ziehen:

find . -type f -exec sed -i.bak -E "s/\.`([0-9]+)/[\1]/g" {} \;

Das oben Gesagte ersetzt alle Dateien im aktuellen Verzeichnis und sichert mit alten Dateien mit .bak.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Suchen und ersetzen Sie alle Instanzen eines Werts in JSON durch einen anderen Wert in Powershell

C ++: Ersetzen Sie rekursiv alle Instanzen eines Buchstabens in einer Zeichenfolge durch einen anderen Buchstaben

So ersetzen Sie einen Teil eines Strings durch einen anderen Teilstring

So teilen Sie einen Eintrag eines mehrfach indizierten Pandas-Datenrahmens durch einen anderen

So ersetzen Sie alle Pixel eines bestimmten RGB-Werts durch einen anderen Wert in opencv4nodejs

So ersetzen Sie alle Pixel eines bestimmten RGB-Werts durch einen anderen RGB-Wert in opencv

So ersetzen Sie alle Instanzen eines HTML-Elements durch eine Variable (oder einfachere Methode)

Suchen und ersetzen Sie alle Instanzen eines Wortes durch jquery

So ersetzen Sie Leerzeichen eines charArray durch einen String

Ersetzen eines Strings durch einen variablen String

Durchsuchen Sie einen String-Vektor nach allen Instanzen eines Strings in einem anderen String-Vektor

So ersetzen Sie einen String in einer Spalte durch einen anderen String aus derselben Spalte

So ersetzen Sie einen XML-String durch einen anderen XML-String

Ersetzen Sie einen Funktionsaufruf mithilfe eines Makros durch einen anderen

Ersetzen Sie einen Wert durch einen Wert eines anderen Datenrahmens

Ersetzen eines Strings mit Newline-Zeichen durch einen anderen String

Regulärer Ausdruck zum Ersetzen eines Strings durch einen anderen

So ersetzen Sie den Objektschlüssel durch einen übereinstimmenden Schlüsselwert eines anderen Objekts

So ersetzen Sie einen createText-Knoten durch einen anderen String - Javascript

So ersetzen Sie in Pandas einen Unterdatenrahmen durch einen anderen Unterdatenrahmen

So ersetzen Sie einen Spaltenwert durch einen anderen Spaltenwert

So extrahieren Sie einen bestimmten Teil eines Strings und ersetzen ihn durch denselben extrahierten Wert, jedoch in einem anderen Fall - mithilfe von Java

Python: So ersetzen Sie einen Spaltenwert in einem Datenrahmen durch einen anderen, ohne Duplikate zu entfernen

So ersetzen Sie den String-Array-Wert durch einen anderen Wert in Java

Ersetzen Sie einen Teil eines Strings durch Regex in PHP

So ersetzen Sie ein Wort im Datenrahmen durch Verwendung eines anderen Datenrahmens in Pandas Python

XSL - Ersetzen Sie alle Instanzen eines Tags rekursiv durch ein anderes

Assembly: Ersetzen Sie den Teilstring durch einen anderen String

So ersetzen Sie einen Teil eines Strings zwischen gemeinsamen Merkmalen des Strings mit Python27

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv