Új hozzászólás Aktív témák
-
Atomantiii
őstag
Sziasztok!
Találtam egy python-ban írt kis programot, ami weboldalról grabbelne le tv műsort xml fájlba, de valamilyen encoding problémája van. Úgy gondolom, hogy az ékezetes betűkkel van problémája. Hogyan tudnám kijavítani a hiányzó karaktereket? -
Atomantiii
őstag
válasz #79484416 #4147 üzenetére
Lehet korábbi pythonnal kellene próbálkozni? Vagy feldobni valamire egy ubuntut vagy valamilyen linuxot és azon jó eséllyel elindulna?
Pl ha a \xfb-t hozzáadom valamilyen karakterrel az 1250-es encodinghoz akkor már azon nem problémázik, hanem ha másikat talál, amit nem ismer akkor problémázik. Csak nem mindig írja ki, hogy melyiket nem ismeri, de úgy tűnik az ékezetes karakterek nem tetszenek neki.
[ Szerkesztve ]
-
Atomantiii
őstag
válasz #79484416 #4154 üzenetére
Igen telepítettem és helyileg próbálom futtatni ahogy írod ezzel a py_epg.xml-el, amiből veszi, hogy mely csatornákat akarom. Bár mondjuk ez a notepad++ szerint unicode kódolású és win 10-en próbálom futtatni parancssorból.
Bár most éppen nem írt hibát, de ha más csatornával próbálom akkor van amikor valószínűleg olyan karakterre akad, amivel nem tud mit kezdeni.
[ Szerkesztve ]
-
Atomantiii
őstag
válasz Atomantiii #4159 üzenetére
Most éppen mintha jó lenne, kipróbálom több csatornával is. Illetve mégsem ha mondjuk több napra állítom.
Tehát ennyi szerepel a py_epg.xml-ben a cool csatornára és 10 napra szeretném lehúzni. Ekkor ez szerepel a logban.
[ Szerkesztve ]
-
Atomantiii
őstag
válasz sztanozs #4162 üzenetére
Most éppen melóhelyen: Win 10 Enterprise 22H2, pythonra azt írja, hogy fent van a 3.11.2 és a 3.12.1 is. Most éppen cmd-be írom be a parancsot neki. Mondjuk otthoni gépemen még nem próbáltam, de majd este megpróbálom.
Ha a hiányolt \xc3-at hozzáadnám a cp1250-be, akkor valószínűleg nem problémázna rá, csak előbb-utóbb mindig talál olyat, ami nem tetszik neki.
[ Szerkesztve ]
-
-
Atomantiii
őstag
Xml fájlt hogyan tudnék xz formátumba tömöríteni? Találtam egy ilyen kódot, de akárhogy próbálom nálam mindig 0 byte lesz a mérete.
import lzma as xz
in_file = open('input.xml', 'rb')
input_data = in_file.read()
compressed_data = xz.compress(input_data)
out_file = open('input.xml.xz', 'wb')
in_file.close()
out_file.close()
-
Atomantiii
őstag
Újabb xml fájlos kérdésem lenne, hátha valakinek lenne ötlete hogyan induljak el.
Ilyen tartalom van az xml fájomban, hogy pl:
<programme start="20240226052500 +0100" channel="5.port.hu" stop="20240226060000 +0100" clumpidx="0/1">
<title>Fókusz</title>
<sub-title lang="hu">(magazinműsor, 2024)</sub-title>
<desc lang="hu">Hétköznaponként jelentkező riportmagazin a legfrissebb hírekkel, aktuális információkkal, eseményekkel, emberi sorsokkal, érdekes történetekkel és helyszínekkel a világ minden részéről az RTL Gold-on is. Az RTL Klub mai adása felvételről.</desc>
<date>2024</date>
<category lang="en">Magazines/Reports/Documentary</category>
<category lang="hu">Magazinok/Riportok/Dokumentumfilm</category>
<category lang="en">tvshow</category>
<url system="port.hu">https://port.hu/adatlap/film/tv/fokusz/event-tv-1416159575-5/movie-3806</url>
<previously-shown/>
<rating>
<value>12</value>
<icon src="https://port.hu/img/agelimit/raster/12_age_icon_black.png"/>
</rating>
</programme>Hogy tudnék egy olyan xml-t csinálni belőle, amivel törölném a felesleges sorokat belőle?
Pl ne legyenek benne ezek a sorok:
<url system="port.hu">https://port.hu/adatlap/film/tv/fokusz/event-tv-1416159575-5/movie-3806</url>
<value>12</value>
<icon src="https://port.hu/img/agelimit/raster/12_age_icon_black.png"/>
<category lang="en">Magazines/Reports/Documentary</category>Valakinek ötlete akár arra is, hogy neten hol keresgéljek?
-
Atomantiii
őstag
válasz Hege1234 #4217 üzenetére
Ez a teljes fájl. Ebből szeretnék kitakarítani felesleges dolgokat.
Pl az url-eket, ikonokat esetleg még másokat is, de ha már az egyik összejönne az is sokat jelentene méretben, mert több ezer van benne.
<url system="port.hu">http://port.hu/adatlap/szemely/peter-breitmayer/person-293341</url>
<icon src="https://port.hu/img/agelimit/raster/12_age_icon_black.png" />[ Szerkesztve ]
-
Atomantiii
őstag
válasz Hege1234 #4221 üzenetére
Abban tudnál még segíteni, hogy ezt hogy tudom átírni, hogy ne a tárhelyről, hanem a saját gépemről töltse be a forrás xml-t és oda is mentse le?
Próbáltam, de nem igazán akar összejönni, mindig hibát ír erre a sorra:
edited_tv_programs = ET.tostring(root, encoding='unicode')
Traceback (most recent call last):
File "d:\EPG\xmlremove.py", line 24, in <module>
edited_tv_programs = ET.tostring(root, encoding='unicode')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python312\Lib\xml\etree\ElementTree.py", line 1083, in tostring
ElementTree(element).write(stream, encoding,
File "C:\Python312\Lib\xml\etree\ElementTree.py", line 728, in write
serialize(write, self._root, qnames, namespaces,
File "C:\Python312\Lib\xml\etree\ElementTree.py", line 851, in _serialize_xml
tag = elem.tag
^^^^^^^^
AttributeError: 'ElementTree' object has no attribute 'tag'[ Szerkesztve ]
-
Atomantiii
őstag
-
Atomantiii
őstag
Ez így nagyon szuper, de esetleg lehetne neki mondani valahogy egy olyat, hogy törölje még ezt ki az xml-ből? " clumpidx="0/1" és helyette csak egy ilyet rakjon be: "
Notepad++-ban egy sima keresés és cserével megoldható, de jó lett volna valahogy automatizálni.
-
Atomantiii
őstag
válasz Hege1234 #4226 üzenetére
Közben találtam még egy olyat, hogy egyes sorokban van feleslegben egy ilyen a <desc lang="hu"> után, hogy zárójel nulla pont zárójel szóköz, ami felesleges. Ezt próbáltam kitörölni, de sehogy sem sikerül.
<desc lang="hu">(0.) Get ready as we bring you all of the greatest hits from singing sensation Ariana Grande!</desc>
edited_tv_programs = re.sub(r'<desc lang="hu">(0.) ', r'<desc lang="hu">', edited_tv_programs)
Akárhogy csináltam mindig csak a kezdő zárójel tűnt el de a 0 és a többi maradt.
[ Szerkesztve ]
-
Atomantiii
őstag
válasz Hege1234 #4229 üzenetére
Köszi, jó lett.
edited_tv_programs = re.sub(r'<desc lang="hu">(\(.*\.\) )', r'<desc lang="hu">', edited_tv_programs)
Elvileg elég lenne a desc lang hu-s rész nélkül is, de így is jó. Már itt kínlódtam vele egy jó ideje, sehol sem találtam meg, hogy hivatkozzak a zárójelre, a 0-ra és a .-ra egyszerre.
Így az eredeti 85 MB-os fájlból lett 33 MB.
[ Szerkesztve ]
-
Atomantiii
őstag
válasz sztanozs #4231 üzenetére
Működik Hege javaslata is, persze biztos meg lehet csinálni máshogy is. Itt a forrás fájl.
import xml.etree.ElementTree as ET
import re
xml_content = ET.parse('forras.xml')
root = xml_content.getroot()
not_needed = ["credits", "category", "country", "date", "episode-num", "icon", "length", "previously-shown", "rating", "star-rating", "url"]
for programme in root.findall(".//programme"):
for element_name in not_needed:
elements = programme.findall(f".//{element_name}")
for element in elements:
if element in programme:
programme.remove(element)
edited_tv_programs = ET.tostring(root, encoding='unicode')
# kiszedi a clumpidx="0/1"-et
edited_tv_programs = re.sub(r' clumpidx=.*\"', r'', edited_tv_programs)
# kiszedi a (0.)-át
edited_tv_programs = re.sub(r'<desc lang="hu">(\(.*\.\) )', r'<desc lang="hu">', edited_tv_programs)
# kiszedi a ...-ot
edited_tv_programs = re.sub(r'<desc lang="hu">(\.\.\. )', r'<desc lang="hu">', edited_tv_programs)
with open('edited.xml', 'w', encoding='utf-8') as file:
file.write(edited_tv_programs)
Új hozzászólás Aktív témák
- Milyen légkondit a lakásba?
- Xbox Series X|S
- EA Sports WRC '23
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Spórolós topik
- Az USA nem akarja visszafogni Kína növekedését
- World of Tanks - MMO
- BestBuy topik
- Autós topik látogatók beszélgetős, offolós topikja
- További aktív témák...