Operacje na łańcuchach

Porównywanie łańcuchów:

# -*- coding: utf-8 -*-
 
cmpStr = "abc"
upperStr = "ABC"
lowerStr = "abc"
 
print "Porównanie z uwzględnieniem wielkości liter"
if cmpStr == lowerStr:
   print lowerStr + " odpowiada " + cmpStr
if cmpStr == upperStr:
   print upperStr + " odpowiada " + cmpStr
 
print "\nPorównanie bez uwzględnienia wielkości liter"
if cmpStr.upper() == lowerStr.upper():
   print lowerStr + " odpowiada " + cmpStr
 
if cmpStr.upper() == upperStr.upper():
   print upperStr + " odpowiada " + cmpStr

Rozpoznawanie rozszerzeń plików:

# -*- coding: utf-8 -*-
 
import os
 
for f in os.listdir('chester/txtfiles'):
   if f.endswith('.py'):
      print "Plik Pythona: " + f
   elif f.endswith('.txt'):
      print "Plik tekstowy: " + f

Łańcuch jako kod:

# -*- coding: utf-8 -*-
 
cards = ['As', 'Król', 'Królowa', 'Walet']
codeStr = "for card in cards: \
   print \"Karta = \" + card"
areaStr = "pi*(radius*radius)"
 
# Wykonanie łańcucha znaków
exec(codeStr)
 
# Obliczenie łańcucha znaków
print "\nPole = " + str(eval(areaStr, {"pi":3.14}, {"radius":5}))

Formatowanie:

# -*- coding: utf-8 -*-
 
chapters = {1:5, 2:46, 3:52, 4:87, 5:90}
hexStr = "3f8"
 
# Wyrównanie do prawej
print "Szesnastkowy łańcuch znaków: " + hexStr.upper().rjust(8,'0')
print
for x in chapters:
   print "Rozdział " + str(x) + \
      str(chapters[x]).rjust(15,'.')
 
# Wyrównanie do lewej
print "\nSzesnastkowy łańcuch znaków: " + hexStr.upper().ljust(8,'0')
 
# Formatujący łańcuch znaków
print
for x in chapters:
   print "Rozdział %d %15s" % (x,str(chapters[x]))

Łaczenie łańcuchów:

# -*- coding: utf-8 -*-
 
word1 = "Tylko"
word2 = "kilka"
word3 = "miłych"
word4 = "słów"
wordList = ["Tylko", "kilka", "więcej", "miłych", "słów"]
 
# Proste łączenie za pomocą metody join
print "Słowa:" + word1 + word2 + word3 + word4
print "Lista: " + ' '.join(wordList)
 
# Sformatowany łańcuch znaków
sentence = ("Pierwsze zdanie: %s %s %s %s." % (word1,word2,word3,word4))
print sentence
 
# Połączenie listy słów
sentence = "Drugie zdanie:"
for word in wordList:
   sentence += " " + word
 
sentence += "."
print sentence

Zastępowanie:

# -*- coding: utf-8 -*-
 
question = "Jaka jest prędkość lotu jaskółki bez obciążenia?"
print question
question2 = question.replace("jaskółki", "europejskiej jaskółki")
print question2
question3 = question.replace("jaskółki", "afrykańskiej jaskółki")
print question3

Wyszukiwanie:

# -*- coding: utf-8 -*-
 
searchStr = "Czerwony Niebieski Fioletowy Zielony Niebieski Żółty Czarny"
 
print searchStr.find("Czerwony")
print searchStr.rfind("Niebieski")
print searchStr.find("Niebieski")
print searchStr.find("Turkusowy")
print searchStr.index("Niebieski")
print searchStr.index("Niebieski",20)
print searchStr.rindex("Niebieski")
print searchStr.rindex("Niebieski",1,18)

Rozdzielanie:

# -*- coding: utf-8 -*-
 
sentence = "To jest proste zdanie."
 
paragraph = "To jest prosty akapit.\n\
Składa się on z wielu\n\
wierszy tekstu."
 
entry = "Imię i nazwisko:Brad Dayley:Zawód:Programista"
 
print sentence.split()
print entry.split(':')
print paragraph.splitlines(1)

Przycinanie, odcinanie, ogólnie cięcie

# -*- coding: utf-8 -*-
 
import string
 
badSentence = "\t\tTo zdanie ma pewne problemy.   "
badParagraph = "\t\tTen akapit \nma jeszcze więcej \nproblemów.!?   "
 
# Odcięcie końcowych znaków spacji
print "Długość = " + str(len(badSentence))
print "Bez końcowych spacji = " + \
   str(len(badSentence.rstrip(' ')))
 
# Odcięcie znaków tabulatora
print "\nŹle:\n" + badSentence
print "\nDobrze:\n" + badSentence.lstrip('\t')
 
# Odcięcie znaków końcowych i początkowych
print "\nŹle:\n" + badParagraph
print "\nDobrze:\n" + badParagraph.strip((' ?!\t'))

Unicode:

# -*- coding: utf-8 -*-
 
import string
 
locStr = "El "
uniStr = u"Ni\u00F1o"
print uniStr.encode('utf-8')
print uniStr.encode('utf-16')
print uniStr.encode('iso-8859-1')
 
# Połączenie wyników z lokalnego łańcucha znaków oraz łańcucha w Unicode w nowy łańcuch w Unicode
newStr = locStr+uniStr
print newStr.encode('iso-8859-1')
 
# ascii spowoduje błąd, ponieważ znak '\xF1' znajduje się poza zakresem
asciiStr = newStr.encode('iso-8859-1')
asciiStr = asciiStr.translate(string.maketrans('\xF1','n'), '')
print asciiStr.encode('ascii')
print newStr.encode('ascii')

Szablony, tekst jako zmienna:

# -*- coding: utf-8 -*-
 
import string
 
values = [5, 3, 'niebieski', 'czerwony']
s = string.Template("Zmienna v = $v")
 
for x in values:
   print s.substitute(v=x)