.vault-tools (ohne trading-plattform-pruefung und watermarks-remover), .claude/agents, .claude/skills, .claude/workflows, .claude/settings.json. Co-Authored-By: Claude Opus 5.5 <[email protected]>
32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
"""Ersetzt in EINER Zeile einer Datei bestimmte echte Zeichen durch ihre sechs ASCII-Zeichen lange Escape-Folge.
|
|
|
|
Arbeitet mit Codepunkten; im eigenen Quelltext steht keine Escape-Folge, die eine Schicht auswerten koennte.
|
|
Aufruf: python plan_escape.py <datei> <zeilennummer> <codepunkt-hex> [<codepunkt-hex> ...]
|
|
Beispiel: python plan_escape.py task-107.md 311 2122 0441
|
|
Exit 0, wenn mindestens ein Zeichen ersetzt wurde; 2, wenn die Zeile keines der Zeichen traegt.
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
datei = Path(sys.argv[1])
|
|
nummer = int(sys.argv[2])
|
|
punkte = [int(p, 16) for p in sys.argv[3:]]
|
|
|
|
text = datei.read_bytes().decode("utf-8")
|
|
zeilen = text.split("\n")
|
|
zeile = zeilen[nummer - 1]
|
|
ersetzt = 0
|
|
for punkt in punkte:
|
|
zeichen = chr(punkt)
|
|
folge = chr(92) + "u" + format(punkt, "04x")
|
|
ersetzt += zeile.count(zeichen)
|
|
zeile = zeile.replace(zeichen, folge)
|
|
if ersetzt == 0:
|
|
print(f"BEFUND: Zeile {nummer} traegt keines der Zeichen -- nichts geaendert: {zeilen[nummer - 1][:100]!r}")
|
|
sys.exit(2)
|
|
zeilen[nummer - 1] = zeile
|
|
with open(datei, "w", encoding="utf-8", newline="") as strom:
|
|
strom.write("\n".join(zeilen))
|
|
print(f"{ersetzt} Zeichen ersetzt in Zeile {nummer}: {zeile.strip()[:140]}")
|