CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, 26.10.2020-04.12.2020
This course space end date is set to 04.12.2020 Search Courses: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Merkkijonojen käsittely listoina
Merkkijonot ovat läheistä sukua listoille. Merkkijonon voi muuntaa suoraan listaksi:
merkkijono_listana = list('Sana') print("Merkkijono listana:", merkkijono_listana)
tulostaa
Merkkijono listana: ['S', 'a', 'n', 'a']
Merkkijonon voi siis itsessään ajatella olevan "lista merkkejä". Näin ollen myös merkkijonoja voi indeksoida ja siivuttaa:
teksti = "Kemisti" # indeksi: 0123456 print(teksti[0]) print(teksti[0:4])
tulostaa
K
Kemi
Merkkijonosta voi etsiä toisen merkkijonon sijainnin str.index-funktiolla:
merkkijono = "Huomio!!?"
# indeksi: 012345678
print(merkkijono.index("!!"))
tulostaa
6
Merkkijonofunktiot str.split ja str.join
Funktio str.split pilkkoo merkkijonon listaksi. Esimerkiksi:
teksti = "Sc Ti V Cr Mn Co Fe Ni Cu Zn" alkuaineet = teksti.split() print(alkuaineet)
tulostaa
['Sc', 'Ti', 'V', 'Cr', 'Mn', 'Co', 'Fe', 'Ni', 'Cu', 'Zn']
Oletuksena merkkijonosta poimitaan välilyönnillä erotetut alkiot. Tätä voi muuttaa sep-parametrillä:
teksti = "4, 21, 53, 12, 7, 0" numerot = teksti.split(sep = ',') print(numerot)
tulostaa
['4', ' 21', ' 53', ' 12', ' 7', ' 0']
Funktion str.split käänteisoperaatio on str.join. Funktiolle annetaan parametrina lista ja se yhdistää listan alkiot merkkijonoksi:
alkuaineet = ['B', 'C', 'N', 'O', 'F', 'Ne'] teksti = " ".join(alkuaineet) print(teksti)
tulostaa
B C N O F Ne
Listan alkioiden väliin lisätään .join-funktiokutsua edeltävä merkkijono. Esimerkiksi:
alkuaineet = ['B', 'C', 'N', 'O', 'F', 'Ne'] teksti = ", ".join(alkuaineet) print(teksti)
tulostaa
B, C, N, O, F, Ne
Merkkijonon sisällön tutkiminen
Pythonin dokumentaatiossa listataan useita merkkijonojen käsittelyyn tarkoitettuja funktioita. Tutustutaan muutamaan funktioon, joilla voi tutkia merkkijonon sisältöä.
Funktiolla str.isdigit voi etsiä numeroita:
# Käydään katuosoite läpi merkki kerrallaan ja poimitaan numerot katuosoite = "Kemistintie 1" numerot = "" for merkki in katuosoite: if merkki.isdigit(): numerot = numerot + merkki print("Talon numero on", numerot)
tulostaa
Talon numero on 1
Funktiolla str.isalpha voi etsiä kirjaimia:
# Käydään postinumero läpi merkki kerrallaan ja poimitaan kirjaimet postinumero = "02150 ESPOO" kirjaimet = "" for merkki in postinumero: if merkki.isalpha(): kirjaimet = kirjaimet + merkki print("Postitoimipaikka on", kirjaimet)
tulostaa
Postitoimipaikka on ESPOO
Funktioilla str.isupper ja str.islower voi tutkia, onko merkki iso vai pieni kirjain. str.isspace kertoo, onko merkki "whitespace", eli esimerkiksi välilyönti, tabulaattori tai rivinvaihto:
# Kerätään alkuainesymbolit listaan teksti = "Sc Ti V Cr Mn Co Fe Ni Cu Zn " alkuaineet = [] apujono = "" # Käydään teksti läpi kirjain kerrallaan for merkki in teksti: # Alkuaineen symboli alkaa aina isolla kirjaimella if merkki.isupper(): # Iso kirjain talteen apujono = merkki elif merkki.islower(): # Lisätään pieni kirjain ison alkukirjaimen perään apujono = apujono + merkki elif merkki.isspace(): # Välilyönti erottaa symbolit, eli apujono sisältää nyt alkuainesymbolin # Symboli on joko (a) iso kirjain + pieni kirjain tai (b) vain iso kirjain alkuaineet.append(apujono) apujono = "" print(alkuaineet)
tulostaa
['Sc', 'Ti', 'V', 'Cr', 'Mn', 'Co', 'Fe', 'Ni', 'Cu', 'Zn']
Tehtävä 3.8.1