Strängar#

En sträng består av en följd av tecken, d.v.s. bokstäver, siffror, specialtecken, …

Strängar (”strängkonstanter”) omges antingen med apostrofer (') eller citattecken ("). Om strängen omges med apostrofer kan den innehålla citattecken och om den omges av citattecken kan den innehålla apostrofer.

Exempel: 'Take it easy', "Elmer's tune" och 'Hamlet sade "Ur led är tiden"'.

Tecknen som omger strängen (apostroferna eller citationstecknen) hör inte till själva strängen och finns t ex inte med vid utskrift.

En flerraderssträng kan definieras med hjälp av tre av de omgivande tecknen. Exempel: Koden

verse = """Dromedaren med sin puckel
går i öknen ut på ruckel"""
print(verse)

ger utskriften

Dromedaren med sin puckel
går i öknen ut  ruckel

Specialtecken#

Strängar kan innehålla otryckbara specialtecken som ”radbyte” (newline), tabulatortecken m fl. För att skriva sådana tecken använder man escape-tecknet \ (ofta kallat ”backslash”) följt av ett eller några tecken. Den viktigaste av dessa är \n för radbyte.

Exempel: print('Hej\nhopp!') skriver Hej på en rad och hopp! på nästa rad.

För att lagra escapetecknet i en sträng måste det föregå av ett escapetecken. Uttrycket print('\\\n\n\\') skriver alltså tre rader med en backslash på första och sista och en blank rad i mitten.

Operatorer för strängar#

  • Strängar kan konkateneras med +-operatorn.

  • Strängar kan mångfaldigas med *-operatorn.

  • Enskilda tecken kan nås med indicering ([heltalsvärde]-operatorn).

  • Delsträngar kan skapas med [start:stop]- och [start:stop:incr]-uttryck.

  • Medlemsskap kan testas med operatorn in.

Kod

Utskrift

Kommentar

s = "Kilroy"
s = s + ' was here'

Konkatenering.

print(s)

Kilroy was here

print(s[0])

K

print(s[-2])

r

Näst sista. Negativt index räknas bakifrån.

print(s[0:6])

Kilroy

Delsträng från och med pos 0 till men inte med position 6.

print(s[:3])

Kil

Från början (pos 0).

print(s[-4:-1])

her

Till slutet men inte med sista.

print(s[-4:])

here

Till slutet.

print('Ha' + 'ha'*3 + '!')

Hahahaha!

Repetering och konkatenering.

print('was' in s)
True

Strängar kan också jämföras med relationsoperatorerna ==, !=, <, <=, > och >=.

Funktioner för strängar#

Funktion

Betydelse

Exempel

float

Tolkar strängen som ett flyttal. Fel om det inte går.

float('42') -> 42.0

int

Tolkar strängen som heltal. Fel om det inte går.

int('42') -> 42

len

Längden dvs antalet tecken.

len('42') -> 2

list

Skapar en lista av de ingående tecknen.

list('42') -> ['4', '2']

ord

Ger teckenkoden för sträng med 1 tecken.

ord('a') -> 97

chr

Inversen till ord.

chr(97) -> ’a’

Strängmetoder#

Strängklassen har ett stort antal metoder. Se den officiella dokumentationen för en fullständig förteckning och detaljer.

Observera: Eftersom strängobjekt är oföränderliga returnerar metoder som t ex replace, upper, etc. alltså nya strängobjekt. Originalen är oförändrade.

Metod

Betydelse

Exempel

count(string)

Räknar antalet (icke överlappande) förekomster av en sträng.

'axxxxbxx'.count('x') -> 6
'axxxxbxx'.count('xx') -> 3
'axxxxbxx'.count('xxx') -> 1
find(string)

s1.find(s2) returnerar index av den första förekomsten av s2 i s1, eller -1 om s2 inte förekommer i s1.

'abcd'.find('cd') -> 2
'abcd'.find('cde') -> -1
format(v1, v2, ...)

Formatkonvertering. Se Formatering.

'{:.2f}'.format(3.1) -> '3.10'
index(string)

Som find men fel om strängen inte finns.

isalpha()

True om bara bokstäver.

'åäöü'.isalpha() -> True

isdigit()

True om bara siffror.

'123'.isdigit() -> True
'123.'.isdigit() -> False
join(string)

Förenar delarna. Se exempel.

'-'.join('abc') -> 'a-b-c'
'**'.join('234') -> '2**3**4'
lower()

Ger en ny sträng där alla versaler är utbytta mot motsvarande gemener.

'Ab+Åd2'.lower() -> 'ab+åd2'

lstrip()

Tar bort blanktecken i början,

' hej  '.lstrip() -> 'hej  '

rstrip()

i slutet

' hej  '.rstrip() -> ' hej'

strip()

samt både i början och slutet.

' hej  '.strip() -> 'hej'

partition(delim)

Returnerar en tuppel. Se exemplet.

'name@address'.partition('@') -> ('name', '@', 'address')

replace(s1, s2)

Byter alla förekomster av s1 mot s2.

'Meraaker'.replace('aa','å') -> 'Meråker'

split()
split(delim)

Gör en lista av delarna i strängen. Om parameter given används den som delare, annars används ”white space”.

'ta det lugnt'.split() -> ['ta', 'det', 'lugnt']
'ta det lugnt'.split('t') ->  ['', 'a de', ' lugn', '']
upper

Ger en ny sträng där alla gemenerer är utbytta mot motsvarande versaler.

'åäö'.upper() -> 'ÅÄÖ'