I Python er lister for­an­der­li­ge objekter, mens strenge er ufor­an­der­li­ge. Ved at kon­ver­te­re en streng til en liste kan du ændre, tilføje eller fjerne enkelte tegn eller un­der­af­snit af strengen.

Hvilke for­skel­li­ge måder er der at kon­ver­te­re Python-strenge til lister?

Når du kon­ver­te­rer en streng til en liste, ændrer du da­ta­struk­tu­ren, så den kan un­der­støt­te liste­o­pe­ra­tio­ner. Dette udvider igen de mu­lig­he­der for da­ta­be­hand­ling, der er til­gæn­ge­li­ge for dig.

Her er nogle af de mest al­min­de­li­ge metoder til at kon­ver­te­re en streng til en liste:

split()

Python-metoden split opdeler en streng i en liste over del­stren­ge baseret på en bestemt separator eller et bestemt mønster. Den generelle syntaks for denne metode er:

string.split(sep=None, maxsplit=-1)
python
  • string: Dette er den op­rin­de­li­ge streng.
  • sep (valgfrit): Dette er det tegn, hvor strengen skal opdeles. Hvis der ikke angives noget tegn, opdeler metoden som standard strengen ved mellemrum.
  • maxsplit (valgfrit): maxsplit definerer det maksimale antal op­de­lin­ger, der skal foretages. Hvis du ønsker, at Python skal foretage alle mulige op­de­lin­ger, kan du enten indstille pa­ra­me­te­ren til -1 eller lade den være tom.

Et eksempel:

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

fører til følgende output:

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

f-strenge er et Python-streng­for­mat, der ac­cep­te­rer ethvert udtryk som plads­hol­der i krøllede pa­ren­te­ser. Ved hjælp af dette format kan vi kombinere re­sul­ta­tet af funk­tio­nen split() med strengen "List of colors = ".

list()

Python-funk­tio­nen list() bruges til at kon­ver­te­re for­skel­li­ge da­ta­struk­tu­rer, herunder strenge, til lister. Hvis du overfører en streng som argument til list(), gemmes hvert bogstav eller tegn i strengen som et separat element i den re­sul­te­ren­de liste.

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

Liste­for­stå­el­se

List com­pre­hen­sion er en kompakt måde at oprette lister på ved at kombinere sløjfer og be­tin­gel­ser i en enkelt linje.

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

I dette eksempel starter vi med strengen "Hello World" og opretter en liste, der gemmes i char_list. List com­pre­hen­sion gentager hvert bogstav (char) i strengen text og tilføjer det som et enkelt element til listen char_list.

Strengop­de­ling

String-slicing er en anden metode til at kon­ver­te­re Python-strenge til lister. Den udtrækker dele af en streng (sub­strings) og gemmer dem som elementer i en liste.

substring_list = string[start:stop:step]
python
  • start: Dette er det indeks, hvor op­de­lin­gen begynder. Del­stren­gen begynder med tegnet på denne position.
  • stop: Dette er det indeks, hvor ud­skæ­rin­gen slutter. Sekvensen omfatter alle tegn op til, men ikke inklusive tegnet på denne position.
  • step (valgfrit): Dette er afstanden mellem hvert valgt tegn, når op­de­lin­gen udføres. Det angiver, hvor mange tegn der skal springes over mellem hvert valgt tegn.

convert(string) er en bru­ger­de­fi­ne­ret funktion, der kon­ver­te­rer en streng til en liste over tegn. Når udtrykket list1[:0] = string udføres, indsættes de enkelte tegn i strengen i den tomme liste list1.

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

re.findall()

Du kan bruge funk­tio­nen re.findall() til at kon­ver­te­re Python-strenge til lister ved at finde alle fo­re­kom­ster af et regulært udtryk i en streng og hente dem som en liste.

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

Det regulære udtryk r'\d+' søger efter et eller flere på hinanden følgende cifre i en tekst og re­tur­ne­rer dem som separate elementer i en liste.

enumerate()

Funk­tio­nen enumerate() i Python henter både indekset og værdien for hvert element i en iterabel da­ta­struk­tur. Hvis du ønsker, at listen kun skal indeholde værdierne (dvs. tegnene i strengen), kan du kombinere enumerate() med en liste­for­stå­el­se:

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

JSON

JSON er et modul, der bruges til at læse og skrive JSON-data og kon­ver­te­re Python-da­ta­struk­tu­rer til JSON-format og omvendt. Hvis du vil kon­ver­te­re Python-strenge til lister ved hjælp af JSON-modulet, kan du gøre det ved at parse en streng til et Python-objekt.

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

Funk­tio­nen json.loads() ana­ly­se­rer JSON-strengen og kon­ver­te­rer den til et til­sva­ren­de Python-objekt, i dette tilfælde en liste.

ast.literal

Modulet ast (Abstract Syntax Trees) giver dig mulighed for at evaluere en streng til en Python-da­ta­struk­tur, hvor strengen fortolkes som en Python-literal. Hvis din streng er i et gyldigt Python-li­te­ral­for­mat (som en liste, ordbog, tal osv.), kan du sikkert kon­ver­te­re den til det til­sva­ren­de Python-objekt ved hjælp af 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

Læs mere om, hvordan kon­ver­te­ring af en streng til datetime fungerer i Python, i vores digitale guide.

Gå til ho­ved­me­nu­en