LXML-Zielschnittstelle spaltet Daten auf Nicht-ASCII-Zeichen auf-wie kann ich die gesamte Zeichenfolge erhalten?Python

Python-Programme
Anonymous
 LXML-Zielschnittstelle spaltet Daten auf Nicht-ASCII-Zeichen auf-wie kann ich die gesamte Zeichenfolge erhalten?

Post by Anonymous »

Hier ist ein Datei test.xml: < /p>


data
Łódź
data Łódź

< /code>
Und hier ist ein einfaches Python-Skript, um es in eine Liste mit LXML zu analysieren: < /p>
from lxml import etree

class ParseTarget:
def __init__(self):
self.entries = []
def start(self, tag, attrib):
pass
def end(self, tag):
pass
def data(self, data):
str = data.strip()
if str != '':
self.entries.append(data)
def close(self):
# Reset parser
entries = self.entries
self.entries = []
# And return results
return entries

target = etree.XMLParser(target=ParseTarget(),
# Including/removing this makes no difference
encoding='UTF-8')

tree = etree.parse("./test.xml", target)

# Expected value of tree:
# ['data', 'Łódź', 'data Łódź']
# Actual value of tree
# ['data', 'Łódź', 'data ', 'Łódź']
# What gives!!!?
< /code>
Wie der Kommentar sagt, würde ich damit rechnen, eine Liste von drei Elementen zu haben, aber ich bekomme vier. Dies ist eine minimale Demonstration eines allgemeinen Problems: Einbeziehung von Zeichenfolgen mit Nicht-ASCII-Zeichen (aber mindestens ein ASCII-Zeichen zu Beginn) führt nicht zu einer einzigen Zeichenfolge, sondern zu einer Liste von zwei Zeichenfolgen, die aufgeteilt werden, wo die Nicht-ASCII-Zeichen beginnen. Was soll ich tun?
Ich verwende Python 3.11.2

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post