» »

Kje in kako dobiti vse črke abecede?

Kje in kako dobiti vse črke abecede?

«
1
2

HotBurek ::

Dobro jutro.


Evo, nov dan, nov izzvi.

Zanima me, kje oz. kako naj enostavneje dobit vse črke (lower case) abecede določenega jezika (npr. portugalski, grški, latvijski jezik, itn.)

Lahko je seznam na spletu, glavno je, da se za posamični jezik da dokaj hitro in enostavno pretvori seznam v list.

Primer lista-a za naš jezik bi bil:
"a", "b", "c", "č", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "š", "t", "u", "v", "z", "ž"
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
  • spremenilo: HotBurek ()

ToniT ::

HotBurek ::

To že sedaj uporabljam in veselo na roke pretipkavam.

V vendnost, italjanska abeceda nima črk "j" in "k".
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

googleg1 ::

Tako offtopic. Si se mogoce na tale razpis prijavil ? https://www.rtvslo.si/gospodarstvo/za-s...

HotBurek ::

Ne. :))


Zajem podatkov je enostaven.

Iskanje produktov in sestavljanje svoje kustomizirane košarice tudi.

Malo več časa bi potreboval za izpis, lepo v tabelo.

Bi se dalo.

A kaj naj potem s tem počnem?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Gagatronix ::

www.omniglot.com

Ima za vse mogoce jezike, tudi conlang-e in podobno.

HotBurek ::

Vredu za referenco, a je nekoliko težje kopirat posamezne črke ven iz slike.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

CopiumRovte ::

@HotJufka, najprej povej zakaj to rabiš. Ali delaš slučajno detekcijo jezika ?

Če da:

https://stackoverflow.com/questions/391...


Če ne:

https://stackoverflow.com/questions/611...

HotBurek ::

Iz stringa (ime produkta) bi želel izpisati samo črke (in številke).
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

no comment ::

Potem rabiš samo seznam "posebnih" znakov, ki verjetno ni toliko vezan na lokalizacijo.

garamond ::

Odgovor na enostavno HotBurekovo vprašanje je zelo zapleten in vedno nenatančen ter celo subjektiven.

Abeceda za določen jezik ni nikjer točno definirana. Kot primer za slovenščino smo prejeli seznam črk, ki smo se ga vsi učili; vendar pa je v SSKJ definirano drugače, dodane so še črke q, x, y, in w - v SSKJ so besede tudi s temi črkami. Po tretji strani je pa še dejanska uporaba črk - v slovenskih besedilih se uporabljata na primer tudi "ć" in "ü", medtem ko v slovarju najdemo besede z "ü" in nobene s "ć".

Druga stvar so diakritična znamenja - v slovenščini ostrivec, krativec in strešica (◌̂ ). Čeprav je izris takih znakov identičen za končne uporabnike, pa sta dva načina za kodiranje. Recimo "á" je lahko kodiran kot "znak za a" + "znak za ostrivec" ali pa "znak za á". Binarna zapisa tega se razlikujeta in striktna programska primerjava ne bi vrnila enakosti. S tem da kakšni (nepogosti) znaki nimajo svojega Unicode zapisa kot en znak in jih je možno določiti le kot kombinacijo. Seveda so v slovenščini dovoljene le specifične kombinacije, v drugih jezikih je drugače.

Glede na napisano ni nič čudnega, da ni lahko dosegljivih seznamov abeced, če pa se že najdejo, ne upoštevajo robnih primerov.

Pragmatična rešitev je potem redefinicija problema kot je storil uporabnik "no comment" in minutka googlanja, ki pripelje do rešitve problema v eni vrstici kode ... teoretično.
A parody of extremism is impossible to differentiate from sincere extremism.

joze67 ::

Preden vas zanese predaleč, in preden kdo resno upošteva z vseh vetrov paberkovane modrosti - merodajen je Pravopis (Pravila).

Irbis ::

garamond je izjavil:

Odgovor na enostavno HotBurekovo vprašanje je zelo zapleten in vedno nenatančen ter celo subjektiven.

Pri nekaterih jezikih imaš potem še težavo, da so kot črke v abecedi definirani nizi znakov, npr. v hrvaščini lj, nj in dž. In da stvari res zapleteš, v besedi "vanjezičan" ni črke "nj", ampak sta "n" in "j". Strašno zabavno za sortiranje.

Gagatronix ::

van-jezican. ne vem zakaj bi bil tu Nj.

Irbis ::

Gagatronix je izjavil:

van-jezican. ne vem zakaj bi bil tu Nj.

Saj, tukaj ga ni, ampak v praktično vseh drugih primerih v hrvaščini pa n+j je črka nj. Tako je abecedni red npr.:
vanjezičan
vanzemaljski
vanjski

garamond ::

Mislim da nas je že zaneslo (pre)daleč, vendar je čas za drobno praktično demonstracijo:
1. "nj" ni enak
2. "nj".
Če poskusite označiti/kopirati znak iz prve točke, je to mogoče le obe hkrati kot en sam znak. Medtem ko je v drugi točki zaporedje črk "n" in "j" in se lahko vsak posebej kopira. Ali pa začnite citiran odgovor na ta post in bo tudi vizualna razlika.
A parody of extremism is impossible to differentiate from sincere extremism.

garamond ::

No, dejansko sem našel primeren vir informacij - pošiljam povezavo na Unicode seznam, ki vsebuje tudi glavne črke abeced, pomožne črke, vrstni red črk in številke: https://www.unicode.org/cldr/cldr-aux/c... Žal pa direkten copy-paste za vse jezike ni mogoč (tudi zaradi stvari, ki smo jih že omenjali). Izvorna koda je tukaj (xml).

Primer za hrvaščino bi bil:
<!-- https://github.com/unicode-org/cldr/blob/8fe06e3ee01d3246ed4fa6416143787c909490a7/common/main/hr.xml#L1298 -->
<exemplarCharacters>[a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]</exemplarCharacters>
<exemplarCharacters type="auxiliary">[q w x y]</exemplarCharacters>
<exemplarCharacters type="index">[A B C Č Ć D {DŽ} Đ E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]</exemplarCharacters>
<exemplarCharacters type="numbers">[\- &#8209; , . % &#8240; + 0 1 2 3 4 5 6 7 8 9]</exemplarCharacters>

Slovenščina ima nekam dosti pomožnih črk v primerjavi s hrvaščino:
<exemplarCharacters>[a b c č d e f g h i j k l m n o p r s š t u v z ž]</exemplarCharacters>
<exemplarCharacters type="auxiliary">[á &#224; ă â &#229; ä &#257; &#230; ç ć đ é &#232; &#277; &#234; ë &#275; í &#236; &#301; î &#239; &#299; &#241; ó &#242; &#335; ô ö &#248; &#333; &#339; q ú &#249; &#365; &#251; ü &#363; w x y &#255;]</exemplarCharacters>
<exemplarCharacters type="index">[A B C Č Ć D Đ E F G H I J K L M N O P Q R S Š T U V W X Y Z Ž]</exemplarCharacters>
<exemplarCharacters type="numbers">[, . % &#8240; + &#8722; 0 1 2 3 4 5 6 7 8 9]</exemplarCharacters>
A parody of extremism is impossible to differentiate from sincere extremism.

HotBurek ::

Zankrat delam seznam na roke. Cilj v prvi vrsti je pokrit evropo: od portugalske do rusije in turčije. Pogledat moram še za armenijo in azerbajđan, ter gruzijo.

Cilj je dobit vse unique črke ven, vključno z vsemi možnimi "okraski" okrog osnovnih črk (grška abeceda ima to na ornk).


Zanimivo pa je, kako so nekatere črke prikazane enako, čeprav niso iste tistim "našim". Npr. iz beloruske/bolgarske abecede: e, c, y.

Ter zanimiv turški i brez pike: i


ST ni "prijazen" do nekaterih črk, in jih zamenja z "?". Takle mamo.


Trenutni seznam:
# alphabet language list
list1 = [
    {
        "language": "belarusian",
        "alphabet": ["a", "?", "?", "?", "?", "e", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"]
    },
    {
        "language": "bulgarian",
        "alphabet": ["a", "?", "?", "?", "?", "e", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"]
    },
    {
        "language": "czech",
        "alphabet": ["a", "á", "b", "c", "d", "ď", "e", "é", "ě", "f", "g", "h", "i", "í", "j", "k", "l", "m", "n", "ň",
                     "o", "ó", "p", "q", "r", "ř", "s", "š", "t", "ť", "u", "ú", "ů", "v", "w", "x", "y", "ý", "z", "ž"]
    },
    {
        "language": "danish",
        "alphabet": ["a", "ae", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "o", "p", "q",
                     "r", "s", "t", "u", "v", "w", "x", "y", "z"]
    },
    {
        "language": "english",
        "alphabet": ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
                     "u", "v", "w", "x", "y", "z"]
    },
    {
        "language": "estonian",
        "alphabet": ["a", "ä", "b", "d", "e", "g", "h", "i", "j", "k", "l", "m", "n", "o", "o", "ö", "p", "r", "s", "t",
                     "u", "ü", "v"]
    },
    {
        "language": "french",
        "alphabet": ["a", "â", "a", "ae", "b", "c", "ç", "d", "e", "ë", "e", "é", "e", "f", "g", "h", "i", "î", "i", "j",
                     "k", "l", "m", "n", "o", "ô", "oe", "p", "q", "r", "s", "t", "u", "ü", "u", "v", "w", "x", "y", "z"]
    },
    {
        "language": "german",
        "alphabet": ["a", "ä", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "o", "p", "q", "r",
                     "s", "ß", "t", "u", "ü", "u", "v", "w", "x", "y", "z"]
    },
    {
        "language": "greek",
        "alphabet": ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?",
                     "?","?", "?", "?", "?", "?", "?", "?", "?",
                     "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "u", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?",
                     "?", "?", "?",
                     "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"
                     ]
    },
    {
        "language": "hungarian",
        "alphabet": ["a", "á", "b", "c", "d", "e", "é", "f", "g", "h", "i", "i", "í", "j", "k", "l", "m", "n", "o", "ó",
                     "ö", "ő", "p", "q", "r", "s", "t", "u", "ú", "ü", "ű", "v", "w", "x", "y", "z"]
    },
    {
        "language": "italian",
        "alphabet": ["a", "a", "b", "c", "d", "e", "e", "é", "f", "g", "h", "i", "i", "í", "î", "l", "m", "n", "o", "o",
                     "ó", "p", "q", "r", "s", "t", "u", "u", "ú", "v", "z"]
    },
    {
        "language": "latvian",
        "alphabet": ["a", "a", "b", "c", "č", "d", "e", "e", "f", "g", "g", "h", "i", "i", "j", "k", "k", "l", "l", "m",
                     "n", "n", "o", "p", "r", "s", "š", "t", "u", "u", "v", "z"]
    },
    {
        "language": "polish",
        "alphabet": ["a", "ą", "b", "c", "ć", "d", "e", "ę", "f", "g", "h", "i", "j", "k", "l", "ł", "m", "n", "ń", "o",
                     "ó", "p", "q", "r", "s", "ś", "t", "u", "v", "w", "x", "y", "z", "ź", "ż"]
    },
    {
        "language": "portugese",
        "alphabet": ["a", "a", "a", "b", "c", "ç", "d", "e", "é", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "ó",
                     "ô", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
    },
    {
        "language": "romanian",
        "alphabet": ["a", "ă", "â", "b", "c", "d", "e", "f", "g", "h", "i", "î", "j", "k", "l", "m", "n", "o", "p", "q",
                     "r", "s", "s", "t", "t", "u", "v", "w", "x", "y", "z"]
    },
    {
        "language": "russian",
        "alphabet": ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
                     "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"]
    },
    {
        "language": "slovakian",
        "alphabet": ["a", "á", "ä", "b", "c", "č", "d", "ď", "e", "é", "f", "g", "h", "i", "í", "j", "k", "l", "ĺ", "ľ",
                     "m", "n", "ň", "o", "ó", "p", "q", "r", "ŕ", "s", "š", "t", "ť", "u", "ú", "v", "w", "x", "y", "ý",
                     "z", "ž"]
    },
    {
        "language": "slovenian",
        "alphabet": ["a", "b", "c", "č", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "š",
                     "t", "u", "v", "z", "ž" ]
    },
    {
        "language": "spanish",
        "alphabet": ["a", "á", "b", "c", "d", "e", "é", "f", "g", "h", "i", "í", "j", "k", "l", "m", "n", "n", "o", "ó",
                     "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w", "x", "y", "y"]
    },
    {
        "language": "turkish",
        "alphabet": ["a", "b", "c", "ç", "d", "e", "f", "g", "g", "h", "i", "i", "j", "k", "l", "m", "n", "o", "ö", "p",
                     "r", "s", "ş", "t", "u", "ü", "v", "y", "z"]
    }
];


# letter list
letter_list = [
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w",
    "x", "y", "z", "ß", "a", "á", "â", "a", "ä", "a", "ae", "ç", "e", "é", "e", "ë", "i", "í", "î", "i", "n", "o", "ó",
    "ô", "o", "ö", "o", "u", "ú", "u", "ü", "ý", "a", "ă", "ą", "ć", "č", "ď", "e", "ę", "ě", "g", "g", "i", "i", "k",
    "ĺ", "l", "ľ", "ł", "ń", "n", "ň", "ő", "oe", "ŕ", "ř", "ś", "ş", "š", "ť", "u", "ů", "ű", "ź", "ż", "ž", "s", "t",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "u", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
    "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"
];
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

Gagatronix ::

Armenija ima dve pisavi, Gruzija eno, nobena od teh drzav ne uporablja latinice.

HotBurek ::

CopiumRovte, sem poizkusil detektor jezika "polyglot". A za naš jezik ni preveč zanesljiv.

Dokumentacija pravi, da je slovenski jezik podprt (160. Slovenian):

https://polyglot.readthedocs.io/en/late...

Sample:
# pip install polyglot
# pip install pycld2
# apt-get install python3-icu

import polyglot.detect;

input = "svinjska mast z ocvirki";

languages = polyglot.detect.Detector(input).languages;

for i in range (0, len(languages)):

    print(languages[i]);

Output:
name: Norwegian   code: no       confidence:  96.0 read bytes:   170
name: un          code: un       confidence:   0.0 read bytes:     0
name: un          code: un       confidence:   0.0 read bytes:     0
Detector is not able to detect the language reliably.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

Ahim ::

Gagatronix je izjavil:

Armenija ima dve pisavi, Gruzija eno, nobena od teh drzav ne uporablja latinice.

To bo se zabavno :))

IgorCardanof ::

Kaj pa da bi uporabil google translate API in nek dolg tekst prevajal v razne jezike, iz prevoda pa potem pobral vse znake?
Retail investor, Simp, Crypto analyst, Cardano hejtr
Ne odgovarjam na DM.

bemfa ::

HotBurek je izjavil:

Iz stringa (ime produkta) bi želel izpisati samo črke (in številke).

In kaj boš s tem izpisom počel? Zakaj regex ne zadošča? Nastaviš UTF, da ohrani non-ASCII znake, ne glede na jezik.
text = re.sub(u'\W', '', text, flags=re.UNICODE)


Če se hočeš znebit umlautov, pa izvedeš še normalizacijo znakov (čšđ v csz), primerno za slug v url-jih: https://pypi.org/project/Unidecode/

mr_chai ::

Mene bi zanimalo tudi to zakaj hočeš dobiti iz stringa črke in številke. Zakaj ne recimo besede in številke ?

za lang detekcijo probaj še googlov TextBlock https://textblob.readthedocs.io/en/dev/...

HotBurek ::

Mene bi zanimalo tudi to zakaj hočeš dobiti iz stringa črke in številke. Zakaj ne recimo besede in številke ?

Sej končni cilj so besede in številke. Proces je tak, da gre skozi string od začetka do konca, znak po znak, in preveri; če je znak črka ali številka, ga zapiše v novo sprejemljivko, če ni, zapiše presledek. Potem se pa še dvojne presledke (v while loop-u) spremeni v enojne.


To pa potrebujem zato, da ime produktov pretvorim v seznam "searchable stringov".

Primer:
Darilna škatla "Sladke želje, zdravje in veselje"                     | darilna škatla sladke želje zdravje in veselje
Čili posip Sveta trojica 5/10                                         | čili posip sveta trojica 5 10
Peach Booty elastika Original (Level 3)                               | peach booty elastika original level 3
Paketek COFFEE & COOKIES                                              | paketek coffee cookies
Bébé balzam za lase Skinfairytale | Romeo, Julija & co.               | bébé balzam za lase skinfairytale romeo julija co
Kokosova voda NEGAZIRANA, Dietfood 330ml                              | kokosova voda negazirana dietfood 330ml
Lanena moka (razmaščena), 500g                                        | lanena moka razmaščena 500g
Zeliščna ajurvedska zobna pasta "Nageljnove žbice" Dabur - 100mL/155g | zeliščna ajurvedska zobna pasta nageljnove žbice dabur 100ml 155g
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

Gagatronix ::

Problem resujes z napacnega konca. Ce so ti problem oklepaji, narekovaji in podobno, jih z regexom vrzes ven. 10x manj dela, 10x manj kode, verjetno tudi 10x hitreje.

IgorCardanof ::

Gagatronix je izjavil:

Problem resujes z napacnega konca. Ce so ti problem oklepaji, narekovaji in podobno, jih z regexom vrzes ven. 10x manj dela, 10x manj kode, verjetno tudi 10x hitreje.


+1
Retail investor, Simp, Crypto analyst, Cardano hejtr
Ne odgovarjam na DM.

no comment ::

Gagatronix je izjavil:

Problem resujes z napacnega konca. Ce so ti problem oklepaji, narekovaji in podobno, jih z regexom vrzes ven. 10x manj dela, 10x manj kode, verjetno tudi 10x hitreje.

Way ahead of you...

no comment je izjavil:

Potem rabiš samo seznam "posebnih" znakov, ki verjetno ni toliko vezan na lokalizacijo.


Ampak HotBurek je preverjeno odporen na vse razumne rešitve.

Gagatronix ::

Opazam, ja.

bemfa ::

Človek se trudi, razmišlja in skuša razumet stvari. Manjši problem ima, da sprve ne opiše glavnega problema, ampak smo rešili z podvprašanji.
Večji problem imate tisti, ki odgovarjate. Podana rešitev brez utemeljitve se enostavno spregleda (no_comment, seznam posebnih znakov) v kupu odgovorov, ki samo izpostavljajo težave (dvojna armenska pisava, slovenski pravopis...), ne podajajo pa nobenih rešitev.
V glavnem: za podan problem (iskanje) je smiselno iz teksta odstranit vse ne-alfanumerične znake. Za to poskrbi zgornji regex (kar ni \W -alfanumerični znak; izbriši oz. zamenjaj s presledkom). Če nastaviš, da uporablja Unicode, bo pustil čšž in razne posebne črke pri miru.
Dodatno je smiselno naredit še normalizacijo znakov (čšž, razni umlauti,...) v ASCII znake (csz,u,..). Postopku se reče 'character normalization', v Unicode obstajajo celo standardne norme, rešuje pa ogromno težav, tudi izpostavljene ligature z "fi" itd. In pa seveda obstajajo knjižnice, ki to naredijo. Več: https://unicode.org/reports/tr15/
User lahko potem išče 'bebe balzam' ali 'darilna skatla' pa bo dobil ustrezne zadetke. Kdo bo pa tipkal 'bébé', če že šumnikov večina na telefonu ne zna uporabljat.
Detekcija jezika na tako kratkih nazivih, ki so obenem še polni tujk (skinfairytale, coffee cookies,...) ne bo delovala, niti je ne potrebuješ.

kuall ::

tisto, kar bi tvoj search naredilo res unikaten in bolj uporaben in nekaj novega je, da uporabiš AI, ki zna iskat besede, ki samo izgledajo podobno. dela počasi, tak da bi rabil en job, ki ti preračunava podobnost besed, ne moreš v real time.

npr iščeš škalta in ti najde škatla

ena možna rešitev bi bila, da imaš bazo (zatipkanih) search terminov in si v bazo shraniš, da je podobnost med škalta in škatla zelo velika in ti potem iskanje lahko dela hitro.

google se zlahka s tem preserava, ker ima tako veliko bazo iskanj.

ko smo že pri iskanju: a obstaja desktop program za iskanje po txt fajlih na tvoji kišti, ki ti išče tako dobro kot google, da dela z zatipkanimi besedami itd? če še ne obstaja predlagam bureku, da se raje loti tega programirat, ker bi meni to prav prišlo.

Zgodovina sprememb…

  • spremenilo: kuall ()

HotBurek ::

bemfa, tvoj regex sem potestiral, in dejansko dela, kot se gre. Zelo preprosta in univerzalna rešitev.

Edino en fix potrebuje; regex najde tudi "_", in tega je (če je takšna želja) treba na output-u odstranit oz. zapisat kot presledek.

Sicer pa, regex v osnovi ne rad uporabljam, ker:
- Mi je težko razumet sam regex, in porabim dosti časa z testiranjem, debugiranje in dokumentacijo (in pol fall back na one-by-on metodo).
- Zgoraj omenjen regex [\p{L}0-9] dela lepo na regex101.com in PCRE, ... v Python-u pa ne. Krneki.


Kar se pa tiče pretvorbe Unicod v ASCII pa prej nisem bil toliko pozoren oz. sem kar pustil in primerjal črke striktno tako, kot so napisane ("sola" ne najde "šola").

Sem sedajle pofixal tri stvari:
- za autocomplete funkijo
- za search funkcijo
- in za higliht results funkcijo


Uporabil pa sem:
https://pypi.org/project/Unidecode/

# pip install unidecode

import unidecode;

autocomplete_query = "égoutté";

print(autocomplete_query);

autocomplete_query = unidecode.unidecode(autocomplete_query);

print(autocomplete_query);

égoutté
egoutte
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

Gagatronix ::

"Ne razumem regex in ga moram testirat, zato grem rajsi okrog riti v zep."

Jao.

kuall ::

mah kakšen regex, imaš spisan ekvivalenten normalen c# programček prej kot tisti bedasti regex pa še lažje je berljiv, za vzdrževat, za debuggirat in najbrž tudi hitrejši. regex je za idiote in zelo slaba praksa programiranja.

Gagatronix ::

A ti si eden tistih, ki bi skozi string loopal ?

kuall ::

ni nujno, imaš predpripravljene funkcije, split npr, če pa ne gre drugače tudi loopaš. lažje berljivo kot regex ziher. en mi je na slo techu omenjal, da je regex koristen, če moraš kakšno stvar na hitro pretvorit iz ene oblike v drugo, enkratna akcija, za sebe. no niti za to ni koristen, ker kot sem že omenil spišeš c# programček tako hitro, v parih minutah, da niti regex tu ne koristi, ker ne bi z regex spacal nič hitreje.

Zgodovina sprememb…

  • spremenilo: kuall ()

Gagatronix ::

"Ne razumem regexa zato je bolje/hitreje/lazje spisat kratek C# programcek."

Je ze v redu.

kuall ::

saj ga noben ne razume, razen un, ki se ga je dolgo učil in ima zelo dober spomin, da si zapomni vsa jebena pravila.
slab programer je un, ki uporablja težko razumljive trike in misli, da je zato carrrr.

Gagatronix ::

Slab programer je tisti, ki gre okrog riti v zep.

bemfa ::

Treba je prave stvari uporabit za pravi namen. Rabiš simple string match/replace, je regex zakon. Če moreš parsat strukturirane podatke (JSON/XML/HTML), maš valda boljša orodja za to. Tak da ne samo trobit regex sux, treba je vedet kako in za kaj se ga da uporabit.
HotBurek, ja, \W je non-word znak, matcha vse kar ni 0-9A-Za-z in _, tako da za podčrtaj je treba dodat izjemo: [\W_]+ (ali pa pač še eno vrstico, kjer odstraniš vse podčrtaje)

garamond ::

HotBurek je izjavil:

- Zgoraj omenjen regex [\p{L}0-9] dela lepo na regex101.com in PCRE, ... v Python-u pa ne. Krneki.
Pardon, da nisem testiral. Izgleda da so različne implementacije in da to dela v PHP in js, ne pa v Pythonu. In obratno, rešitev uporabnika bemfa dela v Pythonu in C#, ne pa zadosti dobro (tudi šumniki ipd.) v PHP in js.
A parody of extremism is impossible to differentiate from sincere extremism.

bemfa ::

PHP ma malo drugačno sintakso patternov:
preg_replace("/\W/u", '', $string);

kuall ::

bemfa je izjavil:

Rabiš simple string match/replace, je regex zakon.


za simple tudi jaz uporabim regex, če je ravno stackoverflow odgovor pri roki. isto za linq peace of sheet: ga ne uporabljam, če je stackoverflow odgovor rešitev pač uporabim, samo da dela in šibamo dalje, nimam cajta se jebat.

bemfa ::

Torej če najdeš rešitev na stackoverflow, jo uporabiš. Če pa ne, pa tavaš v temi. Super, da se znajdeš in da ti tak nivo zadošča. Ampak ne tega pol naprej prodajat znanja željnim.

kuall ::

zakaj bi taval v temi? rešitev najdem tako ali drugače, vedno, le stackoverflow je najhitrejše, nimam cajta se preseravat, je treba služit denar.

bemfa ::

Glavno da maš cajt po slotech trolat.

kuall ::

stranki se računa na uro in pošteno do stranke je, da delam hitro, ne da bluzim. ko se dela se dela učinkovito in hitro, ko se bluzi se pa bluzi.

bemfa ::

Pošteno do stranke je, da dela strokovnjak. Torej nekdo, ki ve kaj počne, ne pa lepi kode iz stackoverflowa, pa se dela pametnega.

WhiteAngel ::

kuall je izjavil:

mah kakšen regex, imaš spisan ekvivalenten normalen c# programček prej kot tisti bedasti regex pa še lažje je berljiv, za vzdrževat, za debuggirat in najbrž tudi hitrejši. regex je za idiote in zelo slaba praksa programiranja.


OMG, upam, da nisi diplomant FRIja. Za končne avtomate si že kdaj slišal? In za časovno zahtevnost ostalih metod (večkratno loopanje)?! In-memory split bi delal? Wtf?

OP: Z regexom ni nič narobe. Ga sestaviš, v komentar pa opišeš, kaj naj bi počel, da ga v bodoče lažje "dešifriraš", če je treba kaj spremeniti.

kuall ::

bemfa je izjavil:

Pošteno do stranke je, da dela strokovnjak. Torej nekdo, ki ve kaj počne, ne pa lepi kode iz stackoverflowa, pa se dela pametnega.

pametnega se delaš ti, ker se delaš, da ne uporabljaš stackoverflowa. vsi ga uprabljjo, le bleferji ne priznate.
pa kje ti je logika, da če uporabljam stackoverflow oz. google nisem stokovnjak? slo tech logika :))

WhiteAngel je izjavil:

Z regexom ni nič narobe. Ga sestaviš, v komentar pa opišeš, kaj naj bi počel


dobra koda se sama komentira. regex so tako blesavi, da jih moraš komentirat, ker jih drugič neboš razumel. in potem moraš sinhronizirat regex in komentarje, kar ti seveda ne uspe in imaš nad regex nek star komentar, ki ne odraža realnega stanja...

Zgodovina sprememb…

  • spremenilo: kuall ()
«
1
2


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

python regex split

Oddelek: Programiranje
7487 (392) HotBurek
»

[C++] Ponavljanje črk v stringu

Oddelek: Programiranje
141267 (1053) darkkk
»

Ponavljanje črk? How to?

Oddelek: Programiranje
51102 (1005) vorantz
»

[Java] razlaga kode

Oddelek: Programiranje
101885 (1471) Sergio
»

mIRC

Oddelek: Programiranje
252254 (1588) Sims

Več podobnih tem