Примери
Пример 1. Пресловљавање ћириличног текста у латинични (питон).
azbuka_srb = ['А','Б','В','Г','Д','Ђ','Е','Ж','З','И','Ј','К',Л','Љ','М','Н','Њ',
'О','П','Р','С','Т','Ћ','У','Ф','Х','Ц','Ч','Џ','Ш','а','б','в','г','д','ђ','е','ж','з','и',
'ј','к','л','љ','м','н','њ','о','п','р','с','т','ћ','у','ф','х','ц','ч','џ','ш']
azbuka_cro = ['A','B','V','G','D','Đ','E','Ž','Z','I','J','K','L','Lj','M','N','Nj',
'O','P','R','S','T','Ć','U','F','H','C','Č','Dž','Š','a','b','v','g','d','đ','e','ž','z','i',
'j','k','l','lj','m','n','nj','o','p','r','s','t','ć','u','f','h','c','č','dž','š']
txt = 'Његош, Ђорђе и Љиља журили су на ћевапчиће.'
for i,x in enumerate(azbuka_srb):
txt = txt.replace(azbuka_srb[i],azbuka_cro[i])
continue
print(txt)
return
Излазни текст је: „Njegoš, Đorđe i Ljilja žurili su na ćevapčiće.“ ߛ
Уместо унапред датог txt
ставите
txt = input('Унеси ћирилични текст:')
да би корисник могао унети свој текст. Ставите def cirlat():
испред свега, лево бар једном празнином, да дефинишете дате наредбе као питонову функцију cirlat()
. Њеним позивом, она ће функцијом input()
тражити унос ћириличног теста txt
, пресловити га у латинични и резултат штампати наредбом print
.
У програмском језику php
питонову варијаблу txt
пишемо $txt
, дакле са знаком долара испред њеног назива.
Пример 2. Пренос податка из php у python.
Из php програма (небитног назива) наредбама
<?php
$txt = "Ovo je tekst.";
echo shell_exec("python test.py \"$txt\"");
?>
позивамо python програм test.py
који гласи
import sys
x=sys.argv
print(x)
Излазни текст је: „['test.py', 'Ovo je tekst.']“ ߛ
Питонов модул sys
пружа функције и променљиве које се користе за манипулисање различитим деловима питоновог окружења током извршавања наредби.
sys.argv враћа листу аргумената наредбе прослеђене скрипти, где је sys.argv[0] назив скрипте, а sys.argv[1] послата варијабла.
Пример 3. Укуцавање текста и пренос садржаја у python.
У овом HTML, првом програму, укуцате текст.
Унешени текст се проследи на читање и могућу обраду другом програму (naziv2.php). Други га прослеђује трећем (naziv3.py), на евентуалну дораду и штампање. ߛ
Кодови су овде крајње једноставни да би се лакше дограђивали. Први програм преузима текст "name" од корисника и шаље га уобичајеном HTML формом:
<form action="naziv2.php" method="post">
<input type="text" name="name" ><input type="submit">
Други програм, на уобичајени PHP начин, преузима текст из прве форме и шаље га трећем:
$txt = $_POST["name"];
echo shell_exec("naziv3.py \"$txt\"");
Коначно, трећи програм на питонов начин преузима текст и штампа га:
import sys
x=sys.argv
print(x)
sys.exit
На унешени текст Ovo je poruka.
коначни одговор је
['piton38_32.py', 'Ovo je poruka.']
што је типична питонова двочлана листа која нам сада каже да је тачан назив трећег, коначног програма piton38_32.py
, а послата порука била је Ovo je poruka.
Међутим, ако послати текст садржи нека „чудна“ слова, која су ипак дефинисана UTF-8 кодом, на крају ће се појавити њихов одговарајући хексадецимални запис.
На пример, у првом програму унешена реч „Чађ“ из трећег излази кодирана као '\xd0\xa7\xd0\xb0\xd1\x92'. У питону унесите
b'\xd0\xa7\xd0\xb0\xd1\x92'.decode('utf-8')
добићете 'Чађ'. У питону унесите
u'Чађ'.encode('utf-8')
добићете назад b'\xd0\xa7\xd0\xb0\xd1\x92'.
Други пример, у првом програму унешена реч „Đorđe“ из трећег излази кодирана као '\xc4\x90or\xc4\x91e'. У питону унесите
u'Đorđe'.encode('utf-8')
добићете назад b'\xc4\x90or\xc4\x91e'.
Дакле, у примеру 3, послати текст Đorđe
питон штампа делимично кодирано '\xc4\x90or\xc4\x91e'
, јер слово које није у ASCII коду он уникодира. Тим мешањем добијамо додатно компликовање обраде.
Пример 4. Обрада кода у питону.
Делимични уникод текста Đorđe
је '\xc4\x90or\xc4\x91e', па дефинишемо варијабле питоновим наредбама редом:
v1 = '\xc4\x90or\xc4\x91e'
v2 = list(v1)
v3 = []
for i,x in enumerate(v2): v3.append(ord(v2[i]))
Добили смо листу v3 = [196, 144, 111, 114, 196, 145, 101] чији су елементи декадних кодови слова текста Đorđe
. Даље настављамо у питону:
v4 = bytes(v3)
v5 = v4.decode('utf-8')
Добијено v5
је Đorđe
. ߛ
Иначе, низ ових наредби је моја приватна функција utftxt(x)
. Она рецимо аргумент x = '\xc4\x90or\xc4\x91e' пресликава у Đorđe
. Због начина читања варијабли, као текста или броја и интерпретације броја у базама, питон прави проблеме са овом конверзијом и настаје потреба за овом функцијом. Питон неке наредбе различито извршава непосредно и из функције.
Пример 5. Пренос непромењеног текста.
У овом HTML програму yкуцани текст прослеђује се PHP програму који га чита и текст преноси трећем PY програму на евентуалну обраду и штампање. ߛ
На овај пример се може надовезати неки уредник „чудних“ азбука. Ради комплетности са горњим „ћирилизатором“ (пример 1), који преводи ћирилицу у латиницу, наводим и симетричан питонов програм за обрнуто превођење, са латинице на ћирилицу. Он је latcir()
.
Пример 6. Пресловљавање латиничног текста у ћирилични (питон).
slova_srb=['Љ','Њ','Џ','љ','њ','џ','А','Б','В','Г','Д','Ђ','Е','Ж','З', 'И','Ј',
'К','Л','М','Н','О','П','Р','С','Т','Ћ','У','Ф','Х','Ц','Ч','Ш','а','б','в','г','д',
'ђ','е','ж','з','и','ј','к','л','м','н','о','п','р','с','т','ћ','у','ф','х','ц','ч','ш']
slova_cro=['Lj','Nj','Dž','lj','nj','dž','A','B','V','B','D','Đ', 'E','Ž','Z', 'I','J',
'K','L','M','N','O','P','R','S','T','Ć','U','F','H','C','Č','Š','a','b','v','g','d',
'đ','e','ž','z','i','j','k','l','m','n','o','p','r','s','t','ć','u','f','h','c','č','š']
txt = 'Njegoš, Đorđe i Ljilja žurili su na ćevapčiće.'
for i,x in enumerate(slova_cro):
txt = srb.replace(slova_cro[i],slova_srb[i])
continue
print(txt)
return
Излазни текст је: „Његош, Ђорђе и Љиља журили су на ћевапчиће.“ ߛ
Обратите пажњу на другачији редослед слова у овом примеру (6) од онога у претходном (1). Овај низ слова може се користити у горњем примеру, али горњи у доњем не.
Примере 1 и 6 навео сам просто као демонстрацију једноставности и у том смислу моћи Python-а у односу на JavaScript, чији код за исти посао (ћирилизатор) је и на овом сајту, а који је десетинама пута дужи.
Напомињем да скоро ништа, или много тога из ових примера није било могуће наћи на интернету или по форумима компјутераша у време до почетка јуна 2021. када сам правио ову страницу.