Strings

El tipus str

Valors literals

  • Valor literal de tipus str

    >>> 'Hola!'
    'Hola!'
    >>> "Digues com estàs."
    'Digues com estàs.'
    >>> s = """I les teves
    amistats,
       com van?"""
    >>> s
    'I les teves\namistats,\n   com van?'
    >>> print(s)
    I les teves
    amistats,
       com van?
    
  • Una seqüència d’escapament permet representar un caràcter de control, però també alguns caràcters imprimibles

    seqüència d’escapament

    significat

    caràcter de control?

    n

    salt de línia

    t

    tabulador

    Si

    \ \

    \

    No

    \'

    '

    No

    \"

    "

    No

    Vegeu escape-sequences a python:reference/index

Accés a un caràcter

  • L'operador claudàtor ([]) permet accedir a un únic caràcter d’un string mitjançant un índex

  • L'índex és l’expressió entre claudàtors i sempre comença per zero.

    >>> adr = "joan@exemple.com"
    >>> type(adr)
    <class 'str'>
    >>> adr[0]
    'j'
    >>> adr[4]
    '@'
    

Concatenació i repetició

  • Concatenació: operador +

    >>> nom = "joan"
    >>> domini = "exemple.com"
    >>> adr = nom + '@' + domini
    >>> adr
    'joan@exemple.com'
    
  • Repetició: operador *

    >>> a = "Bon dia!"
    >>> b = a*3
    >>> b
    Bon dia!Bon dia!Bon dia!
    >>> c = a + a + a
    >>> c
    Bon dia!Bon dia!Bon dia!
    >>> b == c
    True
    
  • Exemples d’operacions il·legals.

    'a' / 'b'
    'a' - 'b'
    'a' ** 3
    

Longitud

  • La funció len() retorna el nombre de caràcters d’un string

  • El darrer element d’un string ocupa l’índex, longitud menys u.

  • Els índexs negatius comencen a comptar des del final de l'string.

    >>> adr = "joan@exemple.com"
    >>> la = len(adr)
    >>> la
    16
    >>> adr[la - 1]
    'm'
    >>> adr[-1]
    'm'
    
  • String buit o nul.

    >>> s = ''
    >>> type(s)
    <class 'str'>
    >>> s
    ''
    >>> len(s)
    0
    

Llesques

  • L’operador llesca string[n:m] obté el substring que comença en el caràcter d’index n inclòs i acaba en el d’índex m exclòs.

  • n es pot ometre: comença en el primer caràcter

  • m es pot ometre: va fins al darrer caràcter

  • Si s’ometen tots dos: tot l”string.

  • Llesques esteses: string[n:m:p] obté el substring que comença en el caràcter d’índex n inclòs i acaba en el d’índex m exclòs amb pas p.

    >>> adr = "joan@exemple.com"
    
    >>> nom = adr[0:4]
    >>> nom
    'joan'
    >>> domini = adr[5:16]
    >>> domini
    'exemple.com'
    
    >>> nom = adr[:4]
    >>> nom
    'joan'
    >>> domini = adr[5:]
    >>> domini
    'exemple.com'
    
    >>> pd = adr[5:12]
    >>> pd
    'exemple'
    

L’operador in

  • a in b: pertany a a l”string b?

  • a not in b: a no pertany a l”string b?

    >>> adr = "joan@exemple.com"
    
    >>> '@' in adr
    True
    >>> ' ' not in adr
    True
    >>> not (' ' in adr)
    True
    
    >>> adr_val = '@' in adr and '.' in adr and ' ' not in adr
    >>> adr_val
    True
    

Comparació d’strings

  • Operadors: ==, !=, <, >, <=, >=.

  • Comparacions en ordre alfabètic

    >>> x, y = 'hipopòtam', 'hipotàlem'
    
    >>> x == y
    False
    >>> x != y
    True
    >>> x < y
    True
    >>> x > y
    False
    
    >>> 'a' == 'A'
    False
    >>> 'a' < 'A'
    False
    >>> 'a' != 'à'
    True
    >>> 'a' > 'à'
    False
    
    >>> '8' < '10'
    False
    >>> '08' < '10'
    True
    

Els strings són immutables

  • Un string no canvia mai.

Mètodes d’strings

  • Vegeu String Methods a The Python Standard Library.

  • A la pràctica, un mètode es comporta com una funció, però amb una sintaxi de crida diferent:

    >>> 'maryland'.capitalize()
    'Maryland'
    >>> "what's all this, then, amen?".title()
    "What'S All This, Then, Amen?"
    >>> 'How to Center Text Using Python'.center(70)
    '                   How to Center Text Using Python                    '
    >>> 'angola'.upper()
    'ANGOLA'
    
  • Els mètodes d’string formen part dels objectes string, i s’invoquen (es criden) aplicant l’operador punt (.) després de l’objecte seguit pel nom del mètode.

Comptar

  • count()

    >>> adr = "joan@exemple.com"
    >>> adr_val = adr.count('@') == 1 and '.' in adr and ' ' not in adr
    >>> adr_val
    True
    

Cercar

  • find()

  • index()

    >>> adr = "joan@exemple.com"
    
    >>> iarroba = adr.find('@')
    >>> iarroba
    4
    >>> ipunt = adr.find('.')
    >>> ipunt
    12
    
    >>> nom = adr[:iarroba]
    >>> nom
    'joan'
    
    >>> domini = adr[iarroba+1:]
    >>> domini
    'exemple.com'
    
    >>> pd = adr[iarroba+1:ipunt]
    >>> pd
    'exemple'
    

substituir

  • replace()

    >>> nom = "Joan del Riu"
    >>> domini = "exemple.com"
    
    >>> adr = nom.replace(' ', '_') + '@' + domini
    >>> adr
    'Joan_del_Riu@exemple.com'
    
  • strip().

    >>> nom_b = " \t Joan del Riu\n"
    >>> nom_b
    ' \t Joan del Riu\n'
    >>> print(nom_b)
          Joan del Riu
    
    >>> nom = nom_b.strip()
    >>> nom
    'Joan del Riu'
    
    >>> adr = nom.replace(' ', '_') + '@' + domini
    >>> adr
    'Joan_del_Riu@exemple.com'
    
    >>> domini_b = " \n  exemple.com "
    >>> domini_b
    ' \n  exemple.com '
    >>> print(domini_b)
    
      exemple.com
    
    >>> domini = domini_b.strip()
    >>> domini
    'exemple.com'
    

Classificar

  • isalnum()

  • isalpha()

  • isdecimal()

  • isdigit()

  • islower()

  • isnumeric()

  • isprintable()

    >>> ' '.isprintable()
    True
    >>> '\t'.isprintable()
    False
    >>> '\n'.isprintable()
    False
    
  • isspace()

    >>> ' \t\n'.isspace()
    True
    
  • isupper()

    >>> 'ABC'.isuuper()
    True
    >>> 'AbC'.isupper()
    False
    

Majúscules i minúscules

  • upper()

    >>> 'abC 3'.upper()
    'ABC 3'
    
  • lower()

    >>> 'abC 3'.lower()
    'abc 3'
    
  • capitalize()

    >>> 'alguna paraula més?'.capitalize()
    'Alguna paraula més?'
    

Formatació d'strings

  • Mètode format().

    >>> hora = 8
    >>> minuts = 30
    >>>
    >>> '{}:{}'.format(hora, minuts)
    '8:30'
    

Exercicis