www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 
Sponsored by SiOL

python in obdelava nizov (stringov)

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Raspberry Pi sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3315
Aktiv.: 19.52
Kraj: Dragomer

PrispevekObjavljeno: Ned Nov 20, 2016 1:03 pm    Naslov sporočila:  python in obdelava nizov (stringov) Odgovori s citatom

Pozdravljeni,

RPI sem šele nabavil in se počasi spoznavam.
Tudi "Hej, ljudje!" sem že uspel programirat v Pythonu.
Za obdelavo nizov (stringov) je gotovo na razpolago obsežna biblioteka. Malo sem iskal po iskalniku Google in tistega kar iščem, še nisem našel, kar ne pomeni, da ne obstaja.

Rad bi našel nekaj kot je v Bascomu Gettoken funkcija. Le ta iz velikega niza, kjer je v njem več besed, podnizov različnih dolžin, potegne ven tistega, katerega zaporedno številko sem podal v klicu.

Recimo

Citiram:
b = gettoken(a,5," ")

mi bo dal rezultat, če je v nizu
Citiram:
a = "Dober dan, ljudje dobre volje, spet je nedelja!"

v
Citiram:
b = "volje"

ker sem pač zahteval peti podniz, in nizi so med seboj ločeni z znakom " " - blank, tretji argument v klicu.

Če take funkcije ni, jo bom moral naštrikati sam, ampak sem len in nerad izumljam kolo.

_________________
Charles Baudelaire:“Vragova največja zvijača je v tem, da je uspel prepričati svet, da ne obstaja.”
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1686
Aktiv.: 9.93
Kraj: Ig

PrispevekObjavljeno: Ned Nov 20, 2016 1:53 pm    Naslov sporočila:   Odgovori s citatom

Zdravo,
uporabi string.split().

Koda:


myString =" Zdravo, kako si?"
myWords =myString.split()
myWord =myWords[2]
myWord
'si?'




LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3315
Aktiv.: 19.52
Kraj: Dragomer

PrispevekObjavljeno: Ned Nov 20, 2016 2:01 pm    Naslov sporočila:   Odgovori s citatom

Hvala, bom probal.

Fino bi bilo, da bi lahko string razbil tudi na osnovi kakega drugega ločilnega znaka, recimo vejice. Če morda veš, kako izgledajo NMEA telegrami ki jih daje običajni GPS modul, tam so koordinate in drugi podatki med seboj ločeni z vejicami. S to funkcijo si lahko pomagam šele potem, ko vse vejice zamenjam z blanki.

Hja, to je vedno, kadar presedlaš na drugo živinče. (Menjaš programsko okolje) Se lahko zgodi, da iz konja presedlaš na osla ali psa. Seveda oa obstaja neka verjetnost, da presedlaš tudi na boljše.

Vsekakor, kjer je volja, je tudi pot.

Hvala

_________________
Charles Baudelaire:“Vragova največja zvijača je v tem, da je uspel prepričati svet, da ne obstaja.”
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1686
Aktiv.: 9.93
Kraj: Ig

PrispevekObjavljeno: Ned Nov 20, 2016 2:13 pm    Naslov sporočila:   Odgovori s citatom

Vilko,

uporabiš isto metodo, samo delimiter definiraš:

Koda:

>>> myString = "ena,dva,tri,štiri,pet"
>>> myWords = myString.split(",")
>>> myWord = myWords[2]
>>> myWord
'tri'
>>>


v zgornjem primeru je delimiter ","

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3315
Aktiv.: 19.52
Kraj: Dragomer

PrispevekObjavljeno: Ned Nov 20, 2016 3:04 pm    Naslov sporočila:   Odgovori s citatom

Krasno! Hvala!

Hej, kako so pa naredil, da ti 'požre' šumnike?

Meni pri vsaki vrstici, ki vsebuje kakršen koli šumnik ali celo klicaj, daje napako:

yntaxError: Non-ASCII character '\x9a' in file strings.py on line 66, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

_________________
Charles Baudelaire:“Vragova največja zvijača je v tem, da je uspel prepričati svet, da ne obstaja.”
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1686
Aktiv.: 9.93
Kraj: Ig

PrispevekObjavljeno: Ned Nov 20, 2016 5:01 pm    Naslov sporočila:   Odgovori s citatom

Ne vem. To v linuxu dela samo od sebe...

LP G

Pardon, vidim da uporabljaš RPI. Bom pogledal, kako deluje na moji malini.

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1686
Aktiv.: 9.93
Kraj: Ig

PrispevekObjavljeno: Ned Nov 20, 2016 6:25 pm    Naslov sporočila:   Odgovori s citatom

Sem preizkusil na malini, pri vnašanju stringov ni bilo težav, pri izpisovanju je pa vrglo ven tole:

Koda:

pi@raspberrypi:~ $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> myString = "ena,dva,tri,štiri,pet,šest"
>>> myWords = myString.split(",")
>>> myWord = myWords[3]
>>> myWord
'\xc5\xa1tiri'
>>>
KeyboardInterrupt
>>>
pi@raspberrypi:~ $



bom malce raziskal.

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vpeter
Član
Član



Pridružen-a: Pon 11 Jun 2012 16:05
Prispevkov: 300
Aktiv.: 3.28
Kraj: Maribor

PrispevekObjavljeno: Ned Nov 20, 2016 6:26 pm    Naslov sporočila:   Odgovori s citatom

vilko je napisal/a:
kako so pa naredil, da ti 'požre' šumnike?

Meni pri vsaki vrstici, ki vsebuje kakršen koli šumnik ali celo klicaj, daje napako:

yntaxError: Non-ASCII character '\x9a' in file strings.py on line 66, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


Nastavi coding:
Koda:
#!/usr/bin/python
#-*- coding: cp1250 -*-

tvoja koda


ali pa na utf-8 in shrani datoteko v utf-8 format.


Nazadnje urejal/a vpeter Ned Nov 20, 2016 6:38 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1686
Aktiv.: 9.93
Kraj: Ig

PrispevekObjavljeno: Ned Nov 20, 2016 6:36 pm    Naslov sporočila:   Odgovori s citatom

http://stackoverflow.com/questions/34015615/python-reversing-an-utf-8-string

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1686
Aktiv.: 9.93
Kraj: Ig

PrispevekObjavljeno: Ned Nov 20, 2016 8:10 pm    Naslov sporočila:   Odgovori s citatom

Evo, tole zdaj deluje:


Koda:


# -*- coding: utf-8 -*-
myString = "škoda, šokantno, škuorja, škržat, ščurek"
myWords = myString.split(",")
for x in range (0,len(myWords)):
   myWord = myWords[x]
   print myWord




pi@raspberrypi:~ $ python test.py
škoda
šokantno
škuorja
škržat
pi@raspberrypi:~ $


LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
MitjaN
Član
Član



Pridružen-a: Sre 17 Avg 2011 15:40
Prispevkov: 90
Aktiv.: 0.89
Kraj: Ljubljana

PrispevekObjavljeno: Ned Nov 20, 2016 10:04 pm    Naslov sporočila:   Odgovori s citatom

Pazi, ko bereš napotke in kodo iz interneta. Med Pythonom 2 in 3 je velika razlika kako se obravnavajo stringi.

Tako, da če poganjaš Python 3 in testiraš kodo ki je pisana za python 2 si lahko več dni razbijaš glavo, zakaj ne deluje tako kot bi moralo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Raspberry Pi sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 227 dni


Powered by phpBB © 2001, 2005 phpBB Group