定義されたタグでない値を持っていないXML要素を見つける:いくつかはそれで「アーバナ」を持っている(は、私のような値を持つdictonary持っ
{'el salto': ['durango'], 'durango': ['durango', 'urbana'], 'jimenez': ['chihuahua'], 'gomez palacio': ['durango', 'urbana'], 'chihuahua': ['chihuahua', 'urbana'], 'santiago papasquiaro': ['durango'], 'lerdo': ['durango'], 'matamoros': ['coahuila'], 'nuevo ideal': ['durango'], 'canatlan': ['durango'], 'hidalgo del parral': ['chihuahua', 'urbana'], 'torreon': ['coahuila'], 'cuauhtemoc': ['chihuahua', 'urbana'], 'delicias': ['chihuahua', 'urbana', 'chihuahua'], 'villa union': ['durango'], 'vicente guerrero': ['durango'], 'meoqui': ['chihuahua'], 'guadalupe victoria': ['durango'], 'saucillo': ['chihuahua'], 'nuevo casas grandes': ['chihuahua', 'urbana'], 'camargo': ['chihuahua'], 'nombre de dios': ['durango'], 'juarez': ['chihuahua', 'urbana'], 'francisco i. madero': ['durango'], 'san pedro': ['coahuila']}
を、いくつかの」doesnのt)
要素のタグ "d_ciudad"にkeyが含まれている場所で結果をフィルタリングし、要素のタグ "d_estado"と同じ値が辞書のキーに含まれているかどうかを確認する必要があります。辞書のキーもこれでフィルタリングし、次のコードを試しています:
from xml.etree.ElementTree import ElementTree
import csv
tree = ElementTree()
my_dict = dict()
# Test input
tree.parse("sample_in.xml")
with open('file1.csv', 'rb') as csv_file:
reader = csv.reader(csv_file)
my_dict = dict(reader)
for node in tree.findall('.//data'):
# Remove node if the name attribute value is not in inputID
if not node.attrib.get('d_ciudad').lower() in my_dict:
tree.getroot().remove(node)
else:
if not node.attrib.get('d_estado').lower() in my_dict[node.attrib.get('d_ciudad')]:
tree.getroot().remove(node)
else:
if 'urbana' in my_dict[node.attrib.get('d_ciudad').lower()]:
if node.attrib.get('d_zona').lower() != 'Urbano':
tree.getroot().remove(node)
# Do what you want with the modified xml
tree.write('sample_out.xml')
私はそれより多くのファイルを取得していますが、ns0:がたくさんあります。 XMLは次のようにしている:
INPUT
<NewDataSet><xsd:schema targetNamespace="NewDataSet" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" elementFormDefault="qualified"><xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd"/><xsd:element name="table"><xsd:complexType><xsd:sequence><xsd:element name="d_codigo" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="5"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="d_asenta" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="60"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="d_tipo_asenta" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="40"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="D_mnpio" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="50"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="d_estado" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="35"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="d_ciudad" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="50"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="d_CP" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="5"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="c_estado" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="2"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="c_oficina" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="5"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="c_CP" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="5"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="c_tipo_asenta" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="2"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="c_mnpio" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="3"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="id_asenta_cpcons" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="4"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="d_zona" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="40"/></xsd:restriction></xsd:simpleType></xsd:element><xsd:element name="c_cve_ciudad" minOccurs="0"><xsd:simpleType><xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="3082" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xsd:maxLength value="2"/></xsd:restriction></xsd:simpleType></xsd:element></xsd:sequence></xsd:complexType></xsd:element></xsd:schema><table xmlns="NewDataSet"><d_codigo>01000</d_codigo><d_asenta>San Ángel</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0001</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01010</d_codigo><d_asenta>Los Alpes</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0005</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01020</d_codigo><d_asenta>Guadalupe Inn</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0006</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01030</d_codigo><d_asenta>Florida</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0010</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01030</d_codigo><d_asenta>Axotla</d_asenta><d_tipo_asenta>Pueblo</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>28</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0009</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01040</d_codigo><d_asenta>Campestre</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0012</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01048</d_codigo><d_asenta>Las Águilas</d_asenta><d_tipo_asenta>Unidad habitacional</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>31</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0013</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01049</d_codigo><d_asenta>Tlacopac</d_asenta><d_tipo_asenta>Pueblo</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>28</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0014</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01050</d_codigo><d_asenta>Ex-Hacienda de Guadalupe Chimalistac</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0016</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table><table xmlns="NewDataSet"><d_codigo>01060</d_codigo><d_asenta>San Ángel Inn</d_asenta><d_tipo_asenta>Colonia</d_tipo_asenta><D_mnpio>Álvaro Obregón</D_mnpio><d_estado>Ciudad de México</d_estado><d_ciudad>Ciudad de México</d_ciudad><d_CP>01001</d_CP><c_estado>09</c_estado><c_oficina>01001</c_oficina><c_CP></c_CP><c_tipo_asenta>09</c_tipo_asenta><c_mnpio>010</c_mnpio><id_asenta_cpcons>0018</id_asenta_cpcons><d_zona>Urbano</d_zona><c_cve_ciudad>01</c_cve_ciudad></table>
OUTPUT:
<NewDataSet xmlns:ns1="http://schemas.microsoft.com/sqlserver/2004/sqltypes" xmlns:ns2="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:schema elementFormDefault="qualified" targetNamespace="NewDataSet"><xs:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" /><xs:element name="table"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="d_codigo"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="5" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="d_asenta"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="60" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="d_tipo_asenta"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="40" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="D_mnpio"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="50" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="d_estado"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="35" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="d_ciudad"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="50" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="d_CP"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="5" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="c_estado"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="2" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="c_oficina"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="5" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="c_CP"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="5" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="c_tipo_asenta"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="2" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="c_mnpio"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="3" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="id_asenta_cpcons"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="4" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="d_zona"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="40" /></xs:restriction></xs:simpleType></xs:element><xs:element minOccurs="0" name="c_cve_ciudad"><xs:simpleType><xs:restriction base="sqltypes:nvarchar" ns1:localeId="3082" ns1:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth"><xs:maxLength value="2" /></xs:restriction></xs:simpleType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema><ns2:table><ns2:d_codigo>01000</ns2:d_codigo><ns2:d_asenta>San Ángel</ns2:d_asenta><ns2:d_tipo_asenta>Colonia</ns2:d_tipo_asenta><ns2:D_mnpio>Álvaro Obregón</ns2:D_mnpio><ns2:d_estado>Ciudad de México</ns2:d_estado><ns2:d_ciudad>Ciudad de México</ns2:d_ciudad><ns2:d_CP>01001</ns2:d_CP><ns2:c_estado>09</ns2:c_estado><ns2:c_oficina>01001</ns2:c_oficina><ns2:c_CP /><ns2:c_tipo_asenta>09</ns2:c_tipo_asenta><ns2:c_mnpio>010</ns2:c_mnpio><ns2:id_asenta_cpcons>0001</ns2:id_asenta_cpcons><ns2:d_zona>Urbano</ns2:d_zona><ns2:c_cve_ciudad>01</ns2:c_cve_ciudad></ns2:table><ns2:table><ns2:d_codigo>01010</ns2:d_codigo><ns2:d_asenta>Los Alpes</ns2:d_asenta><ns2:d_tipo_asenta>Colonia</ns2:d_tipo_asenta><ns2:D_mnpio>Álvaro Obregón</ns2:D_mnpio><ns2:d_estado>Ciudad de México</ns2:d_estado><ns2:d_ciudad>Ciudad de México</ns2:d_ciudad><ns2:d_CP>01001</ns2:d_CP><ns2:c_estado>09</ns2:c_estado><ns2:c_oficina>01001</ns2:c_oficina><ns2:c_CP /><ns2:c_tipo_asenta>09</ns2:c_tipo_asenta><ns2:c_mnpio>010</ns2:c_mnpio><ns2:id_asenta_cpcons>0005</ns2:id_asenta_cpcons><ns2:d_zona>Urbano</ns2:d_zona><ns2:c_cve_ciudad>01</ns2:c_cve_ciudad></ns2:table><ns2:table><ns2:d_codigo>01020</ns2:d_codigo><ns2:d_asenta>Guadalupe Inn</ns2:d_asenta><ns2:d_tipo_asenta>Colonia</ns2:d_tipo_asenta><ns2:D_mnpio>Álvaro Obregón</ns2:D_mnpio><ns2:d_estado>Ciudad de México</ns2:d_estado><ns2:d_ciudad>Ciudad de México</ns2:d_ciudad><ns2:d_CP>01001</ns2:d_CP><ns2:c_estado>09</ns2:c_estado><ns2:c_oficina>01001</ns2:c_oficina><ns2:c_CP /><ns2:c_tipo_asenta>09</ns2:c_tipo_asenta><ns2:c_mnpio>010</ns2:c_mnpio><ns2:id_asenta_cpcons>0006</ns2:id_asenta_cpcons><ns2:d_zona>Urbano</ns2:d_zona><ns2:c_cve_ciudad>01</ns2:c_cve_ciudad></ns2:table>
「sample_in.xml」と「sample_out.xml」の内容を投稿してください(質問の最後にあるXMLが入力か出力かわかりません)。また、あなたが期待している出力も含めてください。 – supersam654
それに気づいてくれてありがとう、私はすでに答えを編集しました。出力は、my_dictにないバリューが削除されたフィルタリングされたXMLである必要があります –
'd_ciudad'の値が間違っている場合などは' d_ciudad'要素を削除するか、 'table'全体を削除しますか?それを含む要素? – supersam654