Andrzej Orkan Napisano Styczeń 31, 2008 Zgłoszenie Share Napisano Styczeń 31, 2008 chciałbym napisać w pythonie funkcję, który wszystkie możliwe znaki narodowe z różnych rodzajów kodowania przekształca na znaki z alfabetu łacińskiego, czyli np. ń = n, Ę = E, albo francuskie ç zamieni na c, lub greckie τ na t prototyp takiej funkcji wyglądałby tak: string_wyjściowy = funkcja(string_wejściowy[, rodzaj_kodowania]) nie bardzo potrafię znaleźć w google'u cokolwiek, co by mi pomogło - bo oni tam raczej zajmują się konwersją pomiędzy różnymi rodzajami kodowania, może wy znajdziecie jakiś kod, albo pythonowski moduł, który by umożliwił konwersję o którą mi chodzi? mam jeszcze rozwiązanie takie, że stworzę sobie na piechotę, lub wygeneruję z różnych zestawów kodowych tablicę z bezpośrednimi wskazaniami co na co zamienić, ale to chyba czasochłonne i zrobię to w ostateczności Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Styczeń 31, 2008 Zgłoszenie Share Napisano Styczeń 31, 2008 Obawiam się, że tutaj trzeba będzie zastosować ręczną tablicę zastąpień. Nie wszystkie znaki dają się łatwo zastąpić. Np. greckie α zapewne zmieniałbyś na "a", ale co zrobić z π lub Φ? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Styczeń 31, 2008 Zgłoszenie Share Napisano Styczeń 31, 2008 Jakbym musiał coś takiego robić, to robiłbym pośrednio: najpierw gotowcem do utf-8, a potem zostałoby jedno KODOWANE. Hm... nie pamiętam dokładnie jakie, ale w składni pcre są wyrażenia zapewniające dopasowanie do całej rodziny ,,podobnych'' znaków, np. e z wszelkimi ozdobnikami. Zajrzyj też do dokumentacji tzw. ,,approximate conversion''. O ile pamiętam, powinna być zaimplementowana w najnowszych wydaniach Scintilli (C++) -- gdzieś koło 1.7x, ale na pewno w innych miejscach również. No i zależy, jak daleko chcesz się posunąć. Chińszczyzna? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Andrzej Orkan Napisano Luty 7, 2008 Autor Zgłoszenie Share Napisano Luty 7, 2008 No i zależy, jak daleko chcesz się posunąć. Chińszczyzna? nie.. tu raczej mi chodziło o wszystkie znaczki, które można spotkać w Europie i Ameryce, czyli znaczki arabskie i dalekowschodnie odpadają, ale taką cyrylicę to trzeba już było "spłaszczyć" sposób znalazłem i rzeczywiście jest to tablica kodowań różnych śmiesznych znaczków na odpowiedniki a-z plik ze znaczkami jest zakodowany w utf8, jest odpowiednia dyrektywa w nagłówku jakby co, to mogę udostępnić kod w pythonie ...przedtem po prostu się zastanawiałem, czy nie ma jakiś modułów, które zrobiłyby to za mnie i jeszcze umożliwiałyby konwersję utf-latin-iso i tyle, pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Luty 7, 2008 Zgłoszenie Share Napisano Luty 7, 2008 ...przedtem po prostu się zastanawiałem, czy nie ma jakiś modułów, pcre. Nawet grep "[a-b]" | grep -v "b" wyrzuca z listy znaków utf wszystkie literki a-kształtne. Ale w Pythonie jakoś mi nie wychodzi. Może re jest zbyt toporny? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Joust Napisano Lipiec 12, 2008 Zgłoszenie Share Napisano Lipiec 12, 2008 pcre. Nawet grep "[a-b]" | grep -v "b" wyrzuca z listy znaków utf wszystkie literki a-kształtne. Ale w Pythonie jakoś mi nie wychodzi. Może re jest zbyt toporny? W php polecam strtr() - np. <?php $foo = file_get_contents('php://input'); echo strtr( $foo, 'ąśćźżółĄŚĆŻŹÓŁ','asczzolASCZZOL') ; potem np: cat plik.txt | php konwersja.php > wynik.txt Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Lipiec 12, 2008 Zgłoszenie Share Napisano Lipiec 12, 2008 Po pierwsze: temat z przed pół roku. Po drugie: On chciał Pythona, a nie PHP. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się