www.elektronik.si
python in obdelava nizov (stringov)

www.elektronik.si -> Raspberry Pi sekcija

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Ned Nov 20, 2016 1:03 pm    Naslov sporočila:  python in obdelava nizov (stringov)
----------------------------------------------------------------------------
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.

Avtor: RGorazdKraj: Ig PrispevekObjavljeno: Ned Nov 20, 2016 1:53 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Zdravo,
uporabi string.split().

Koda:


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




LP G

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Ned Nov 20, 2016 2:01 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: RGorazdKraj: Ig PrispevekObjavljeno: Ned Nov 20, 2016 2:13 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Ned Nov 20, 2016 3:04 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: RGorazdKraj: Ig PrispevekObjavljeno: Ned Nov 20, 2016 5:01 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: RGorazdKraj: Ig PrispevekObjavljeno: Ned Nov 20, 2016 6:25 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: vpeterKraj: Maribor okolica PrispevekObjavljeno: Ned Nov 20, 2016 6:26 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: RGorazdKraj: Ig PrispevekObjavljeno: Ned Nov 20, 2016 6:36 pm    Naslov sporočila:  
----------------------------------------------------------------------------
http://stackoverflow.com/questions/34015615/python-reversing-an-utf-8-string

LP G

Avtor: RGorazdKraj: Ig PrispevekObjavljeno: Ned Nov 20, 2016 8:10 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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

Avtor: MitjaNKraj: Ljubljana PrispevekObjavljeno: Ned Nov 20, 2016 10:04 pm    Naslov sporočila:  
----------------------------------------------------------------------------
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.

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group