Pyt­ho­nis­sa listat ovat muo­kat­ta­via objekteja, kun taas merk­ki­jo­not ovat muut­tu­mat­to­mia. Muun­ta­mal­la merk­ki­jo­non listaksi voit muokata, lisätä tai poistaa yk­sit­täi­siä merkkejä tai merk­ki­jo­non osia.

Mitä erilaisia tapoja on muuntaa Python-merk­ki­jo­not listoiksi?

Kun muunnat merk­ki­jo­non luet­te­lok­si, muutat tie­to­ra­ken­net­ta niin, että se tukee luet­te­lo­toi­min­to­ja. Tämä puo­les­taan laajentaa käy­tet­tä­vis­sä olevien tietojen kä­sit­te­ly­vaih­toeh­to­jen va­li­koi­maa.

Tässä on joitakin ylei­sim­piä tapoja muuntaa merk­ki­jo­no listaksi:

split()

Pythonin split-metodi jakaa merk­ki­jo­non ali­merk­ki­jo­no­jen luet­te­lok­si tietyn erottimen tai mallin pe­rus­teel­la. Tämän metodin yleinen syntaksi on:

string.split(sep=None, maxsplit=-1)
python
  • string: Tämä on al­ku­pe­räi­nen merk­ki­jo­no.
  • sep (va­lin­nai­nen): Tämä on erot­ti­me­na käy­tet­tä­vä merkki, jonka kohdalta merk­ki­jo­no jaetaan. Jos erottinta ei anneta, menetelmä jakaa merk­ki­jo­non ole­tusar­voi­ses­ti vä­li­lyön­neil­lä.
  • maxsplit (va­lin­nai­nen): maxsplit määrittää tehtävien jakojen enim­mäis­mää­rän. Jos haluat, että Python suorittaa kaikki mah­dol­li­set jaot, voit joko asettaa pa­ra­met­rin arvoksi -1 tai jättää sen tyhjäksi.

Esimerkki:

text = "blue,green,yellow,red"
print(f"List of colors = {text.split(',')}")
python

johtaa tulokseen:

List of colors = ['blue', 'green', 'yellow', 'red']
python

f-merk­ki­jo­not ovat Python-merk­ki­jo­no­for­maat­ti, joka hyväksyy minkä tahansa lausek­keen paik­ka­merk­ki­nä aal­to­sul­keis­sa. Tätä for­maat­tia käyt­tä­mäl­lä voimme yhdistää split() tuloksen merk­ki­jo­noon "List of colors = ".

list()

Pythonin list()-funktiota käytetään muun­ta­maan erilaisia tie­to­ra­ken­tei­ta, kuten merk­ki­jo­no­ja, listoiksi. Jos annat merk­ki­jo­non ar­gu­ment­ti­na list(), merk­ki­jo­non jokainen kirjain tai merkki tal­len­ne­taan eril­li­se­nä ele­ment­ti­nä tuloksena olevaan listaan.

text = "Hello"
char_list = list(text)
print(char_list)
# Output: ['H', 'e', 'l', 'l', 'o']
python

Luettelon ym­mär­tä­mi­nen

List compre­hen­sion on kompakti tapa luoda luet­te­loi­ta yh­dis­tä­mäl­lä silmukat ja ehdot yhdelle riville.

text = "Hello World"
char_list = [char for char in text]
print(char_list)
# Output: ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
python

Tässä esi­mer­kis­sä aloitamme merk­ki­jo­nol­la "Hello World" ja luomme luettelon, joka tal­len­ne­taan char_list. Luettelon ym­mär­tä­mi­nen toistaa jokaisen merkin (char) merk­ki­jo­nos­sa text ja lisää sen yhtenä ele­ment­ti­nä luet­te­loon char_list.

Merk­ki­jo­non leik­kaa­mi­nen

Merk­ki­jo­no­jen leik­kaa­mi­nen on toinen tapa muuntaa Python-merk­ki­jo­not listoiksi. Se poimii merk­ki­jo­non osia (osa­merk­ki­jo­no­ja) ja tallentaa ne listan ele­ment­tei­nä.

substring_list = string[start:stop:step]
python
  • start: Tämä on indeksi, josta leikkaus alkaa. Ali­merk­ki­jo­no alkaa tällä si­jain­nil­la olevalla merkillä.
  • stop: Tämä on indeksi, jossa leikkaus päättyy. Jono sisältää kaikki merkit tähän kohtaan asti, mutta ei itse merkkiä tässä kohdassa.
  • step (va­lin­nai­nen): Tämä on etäisyys kunkin valitun merkin välillä, kun leikkaus suo­ri­te­taan. Se määrittää, kuinka monta merkkiä kunkin valitun merkin välillä on ohi­tet­ta­va.

convert(string) on käyttäjän mää­rit­tä­mä funktio, joka muuntaa merk­ki­jo­non merkkien luet­te­lok­si. Kun lauseke list1[:0] = string suo­ri­te­taan, merk­ki­jo­non yk­sit­täi­set merkit lisätään tyhjään luet­te­loon list1.

def convert(string):
    list1 = []
    list1[:0] = string
    return list1
str1 = "xyz"
print(convert(str1))
# Output: ['x', 'y', 'z']
python

re.findall()

Voit käyttää re.findall() muun­ta­maan Python-merk­ki­jo­not listoiksi etsimällä merk­ki­jo­nos­ta kaikki sään­nöl­li­sen lausek­keen esiin­ty­mät ja hakemalla ne listana.

import re
text = "123 and 456 are numbers."
numbers_list = re.findall(r'\d+', text)
print(numbers_list)
# Output: ['123', '456']
python

Sään­nöl­li­nen lauseke r'\d+' etsii tekstistä yhden tai useamman pe­räk­käi­sen numeron ja palauttaa ne eril­li­si­nä ele­ment­tei­nä luet­te­los­sa.

enumerate()

Pythonin enumerate() hakee sekä indeksin että arvon jo­kai­ses­ta ele­men­tis­tä tois­tet­ta­vas­sa tie­to­ra­ken­tees­sa. Jos haluat, että luettelo sisältää vain arvot (eli merk­ki­jo­non merkit), voit yhdistää enumerate() luettelon ym­mär­tä­mi­seen:

text = "Python"
char_list = [char for index, char in enumerate(text)]
print(char_list)
# Output: ['P', 'y', 't', 'h', 'o', 'n']
python

JSON

JSON on moduuli, jota käytetään JSON-tietojen lu­ke­mi­seen ja kir­joit­ta­mi­seen sekä Python-tie­to­ra­ken­tei­den muun­ta­mi­seen JSON-muotoon ja päin­vas­toin. Jos haluat muuntaa Python-merk­ki­jo­not listoiksi JSON-moduulin avulla, voit tehdä sen jä­sen­tä­mäl­lä merk­ki­jo­non Python-ob­jek­tik­si.

import json
json_string = '[1, 2, 3, 4, 5]'
list_from_json = json.loads(json_string)
print(list_from_json)
# Output: [1, 2, 3, 4, 5]
python

json.loads() -funktio analysoi JSON-merk­ki­jo­non ja muuntaa sen vas­taa­vak­si Python-ob­jek­tik­si, tässä ta­pauk­ses­sa listaksi.

ast.literal

ast (Abstract Syntax Trees) -moduulin avulla voit arvioida merk­ki­jo­non Python-tie­to­ra­ken­teek­si, jossa merk­ki­jo­no tulkitaan Python-li­te­raa­lik­si. Jos merk­ki­jo­no on kel­vol­li­ses­sa Python-li­te­raa­li­muo­dos­sa (kuten luettelo, sanakirja, numero jne.), voit muuntaa sen tur­val­li­ses­ti vas­taa­vak­si Python-ob­jek­tik­si käyt­tä­mäl­lä ast.literal_eval().

import ast
string = "[1, 2, 3, 4, 5]"
my_list = ast.literal_eval(string)
print(my_list)
# Output: [1, 2, 3, 4, 5]
python

Lue lisää merk­ki­jo­non muun­ta­mi­ses­ta päi­vä­mää­rä- ja ai­ka­muo­toon Pyt­ho­nis­sa di­gi­taa­li­ses­ta op­paas­tam­me. 08730a3518d0bc70351dfc7c186cdfc0

Siirry pää­va­lik­koon