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)