41 Fragen zur String-Manipulation in Python

Ich begann eine Liste der am häufigsten verwendeten Funktionen zu führen und löste algorithmische Probleme mit LeetCode und HackerRank.

Ein guter Programmierer zu sein bedeutet nicht, sich an alle integrierten Funktionen einer bestimmten Sprache zu erinnern. Dies bedeutet jedoch nicht, dass ihr Auswendiglernen nutzlos ist. Besonders - wenn es darum geht, sich auf ein Interview vorzubereiten.

Heute möchte ich mit allen teilen, die meinen Spickzettel für die Arbeit mit Strings in Python haben möchten. Ich habe es als eine Liste von Fragen entworfen, die ich zum Selbsttest verwende. Obwohl diese Fragen nicht auf die vollständigen Aufgaben bezogen sind, die in den Interviews angeboten werden, hilft Ihnen ihre Entwicklung bei der Lösung realer Programmierprobleme.



1. Wie überprüfe ich zwei Objekte auf Identität?


Der Operator gibt iszurück, Truewenn ein Verweis auf denselben Speicherbereich in zwei Variablen geschrieben ist. Dies ist es, worüber wir sprechen, wenn wir über die "Identität von Objekten" sprechen.

Nicht verwechseln isund ==. Der Operator ==überprüft nur die Gleichheit der Objekte.

animals           = ['python','gopher']
more_animals      = animals
print(animals == more_animals) #=> True
print(animals is more_animals) #=> True
even_more_animals = ['python','gopher']
print(animals == even_more_animals) #=> True
print(animals is even_more_animals) #=> False

Achten Sie darauf, dass animalssie even_more_animalsnicht identisch sind, obwohl sie einander gleich sind.

Darüber hinaus gibt es eine Funktion id(), die die Kennung der dem Variablennamen zugeordneten Speicheradresse zurückgibt. Wenn diese Funktion aufgerufen wird, wird für zwei identische Objekte dieselbe Kennung zurückgegeben.

name = 'object'
id(name)
#=> 4408718312

2. Wie kann überprüft werden, ob jedes Wort in einer Zeile mit einem Großbuchstaben beginnt?


Es gibt eine Zeichenfolgenmethode, istitle()die überprüft, ob jedes Wort in einer Zeichenfolge mit einem Großbuchstaben beginnt.

print( 'The Hilton'.istitle() ) #=> True
print( 'The dog'.istitle() ) #=> False
print( 'sticky rice'.istitle() ) #=> False

3. Wie überprüfe ich eine Zeichenfolge auf eine andere Zeichenfolge?


Es gibt eine Anweisung in, die zurückgegeben wird, Truewenn die Zeichenfolge die Suchzeichenfolge enthält.

print( 'plane' in 'The worlds fastest plane' ) #=> True
print( 'car' in 'The worlds fastest plane' ) #=> False

4. Wie finde ich den Index des ersten Auftretens eines Teilstrings in einem String?


Es gibt zwei Methoden, die den Index des ersten Auftretens eines Teilstrings in einer Zeichenfolge zurückgeben. Das ist find()und index(). Jeder von ihnen hat bestimmte Eigenschaften.

Die Methode gibt find()zurück, -1wenn die erforderliche Teilzeichenfolge in der Zeichenfolge nicht gefunden wird.

'The worlds fastest plane'.find('plane') #=> 19
'The worlds fastest plane'.find('car') #=> -1

Eine Methode index()in einer solchen Situation löst einen Fehler aus ValueError.

'The worlds fastest plane'.index('plane') #=> 19
'The worlds fastest plane'.index('car') #=> ValueError: substring not found

5. Wie zähle ich die Anzahl der Zeichen in einer Zeichenfolge?


Die Funktion len()gibt die Länge der Zeichenfolge zurück.

len('The first president of the organization..') #=> 41

6. Wie wird gezählt, wie oft ein bestimmtes Zeichen in einer Zeichenfolge vorkommt?


Die Methode count(), die die Anzahl der Vorkommen in der Zeichenfolge des angegebenen Zeichens zurückgibt, hilft uns bei der Beantwortung dieser Frage .

'The first president of the organization..'.count('o') #=> 3

7. Wie mache ich das erste Zeichen einer Zeichenfolge zu einem Großbuchstaben?


Dazu können Sie die Methode verwenden capitalize().

'florida dolphins'.capitalize() #=> 'Florida dolphins'

8. Was sind F-Linien und wie werden sie verwendet?


Python 3.6 führt eine neue Funktion ein, die sogenannten "F-Strings". Ihre Verwendung vereinfacht die String-Interpolation erheblich. Die Verwendung von F-Linien ähnelt der Anwendung einer Methode format().

Wenn f-Zeilen deklariert werden, wird ein Buchstabe vor dem öffnenden Anführungszeichen geschrieben f.

name = 'Chris'
food = 'creme brulee'
f'Hello. My name is {name} and I like {food}.'
#=> 'Hello. My name is Chris and I like creme brulee'

9. Wie finde ich einen Teilstring in einem bestimmten Teil eines Strings?


Die Methode index()kann aufgerufen werden, indem optionale Argumente übergeben werden, die den Index des Anfangs- und Endfragments der Zeichenfolge darstellen, in dem Sie nach einer Teilzeichenfolge suchen müssen.

'the happiest person in the whole wide world.'.index('the',10,44)
#=> 23

Achten Sie darauf, dass die oben genannte Konstruktion zurückkehrt 23und 0unsere Suche nicht sozusagen einschränkt.

'the happiest person in the whole wide world.'.index('the')
#=> 0

10. Wie füge ich den Inhalt einer Variablen mit der format () -Methode in eine Zeichenfolge ein?


Mit dieser Methode format()können Sie ähnliche Ergebnisse erzielen wie mit f-Linien. Es stimmt, ich glaube, dass es format()nicht so bequem zu verwenden ist, da alle Variablen als Argumente angegeben werden müssen format().

difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
#=> 'That exam was easy!'

11. Woher weiß ich, ob eine Zeichenfolge nur Zahlen enthält?


Es gibt eine Methode isnumeric(), die zurückgibt, Truewenn alle Zeichen in der Zeichenfolge Zahlen sind.

'80000'.isnumeric() #=> True

Beachten Sie bei dieser Methode, dass er keine Satzzeichen als Zahlen zählt.

'1.0'.isnumeric() #=> False

12. Wie teile ich eine Zeichenfolge durch ein bestimmtes Zeichen?


Hier hilft uns eine Methode split(), die eine Zeichenfolge durch ein bestimmtes Zeichen oder durch mehrere Zeichen unterbricht.

'This is great'.split(' ')
#=> ['This', 'is', 'great']
'not--so--great'.split('--')
#=> ['not', 'so', 'great']

13. Wie überprüfe ich, ob eine Zeichenfolge nur aus Kleinbuchstaben besteht?


Die Methode islower()gibt Truenur zurück, wenn die Zeichenfolge ausschließlich aus Kleinbuchstaben besteht.

'all lower case'.islower() #=> True
'not aLL lowercase'.islower() # False

14. Wie überprüfe ich, ob eine Zeichenfolge mit einem Kleinbuchstaben beginnt?


Dies kann durch Aufrufen der obigen Methode islower()für das erste Zeichen der Zeichenfolge erfolgen.

'aPPLE'[0].islower() #=> True

15. Ist es in Python möglich, einer Zeichenfolge eine Ganzzahl hinzuzufügen?


Dies ist in einigen Sprachen möglich, aber Python gibt einen Fehler aus, wenn versucht wird, einen ähnlichen Vorgang auszuführen TypeError.

'Ten' + 10 #=> TypeError

16. Wie kann man eine Linie „umdrehen“?


Um eine Zeile „umzudrehen“, kann sie geteilt werden, indem sie als Zeichenliste dargestellt, die Liste „umgedreht“ und durch Kombination ihrer Elemente eine neue Zeile gebildet wird.

''.join(reversed("hello world"))
#=> 'dlrow olleh'

17. Wie kombiniere ich die Liste der Zeilen zu einer Zeile, deren Elemente durch Bindestriche getrennt sind?


Die Methode join()kann Listenelemente zu Zeichenfolgen kombinieren und einzelne Zeichenfolgen mithilfe des angegebenen Zeichens trennen.

'-'.join(['a','b','c'])
#=> 'a-b-c'

18. Woher weiß ich, dass alle Zeichen in einer Zeichenfolge in ASCII sind?


Die Methode gibt isascii()zurück, Truewenn alle Zeichen in der Zeichenfolge in ASCII vorliegen.

print( 'Â'.isascii() ) #=> False
print( 'A'.isascii() ) #=> True

19. Wie wird die gesamte Zeichenfolge in Groß- oder Kleinschreibung umgewandelt?


Um diese Probleme zu lösen, können Sie die Methoden verwenden upper()und lower()alle Zeichen der Zeichenfolgen in Groß- und Kleinschreibung führen.

sentence = 'The Cat in the Hat'
sentence.upper() #=> 'THE CAT IN THE HAT'
sentence.lower() #=> 'the cat in the hat'

20. Wie konvertiere ich das erste und das letzte Zeichen einer Zeichenfolge in Großbuchstaben?


Wie in einem der vorherigen Beispiele beziehen wir uns hier auf die Zeichen der Zeichenfolge nach Index. Zeilen in Python sind unveränderlich, daher werden wir neue Zeilen basierend auf vorhandenen erstellen.

animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
#=> 'FisH'

21. Wie überprüfe ich, ob eine Zeichenfolge nur aus Großbuchstaben besteht?


Es gibt eine Methode isupper(), die der bereits betrachteten ähnelt islower(). Aber isupper()kehrt Truenur dann , wenn der gesamte String besteht aus Großbuchstaben.

'Toronto'.isupper() #=> False
'TORONTO'.isupper() #= True

22. In welcher Situation würden Sie die splitlines () -Methode verwenden?


Die Methode splitlines()trennt Zeichenfolgen durch Zeilenumbruchzeichen.

sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
#=> ['It was a stormy night', 'The house creeked', 'The wind blew.']

23. Wie bekomme ich eine Linienscheibe?


Um ein Slice eines Strings zu erhalten, wird die folgende Syntax verwendet:

string[start_index:end_index:step]

Hier stepist der Schritt, mit dem Zeichenfolgen aus einem Bereich zurückgegeben werden start_index:end_index. Ein stepWert von 3 gibt an, dass jedes dritte Zeichen zurückgegeben wird.

string = 'I like to eat apples'
string[:6] #=> 'I like'
string[7:13] #=> 'to eat'
string[0:-1:2] #=> 'Ilk oetape' ( 2- )

24. Wie konvertiere ich eine Ganzzahl in eine Zeichenfolge?


Mit dem Konstruktor können Sie eine Zahl in eine Zeichenfolge konvertieren str().

str(5) #=> '5'

25. Woher weiß ich, dass eine Zeichenfolge nur alphabetische Zeichen enthält?


Die Methode gibt isalpha()zurück, Truewenn alle Zeichen in der Zeichenfolge Buchstaben sind.

'One1'.isalpha() #=> False
'One'.isalpha() #=> True

26. Wie kann man alle Vorkommen eines bestimmten Teilstrings in einer bestimmten Zeile ersetzen?


Wenn Sie kein Modul exportieren, mit dem Sie mit regulären Ausdrücken arbeiten können, können Sie dieses Problem mit der Methode lösen replace().

sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
#=> 'Sally sells mountain shells by the mountain shore'

27. Wie kann ein Zeichen einer Zeile mit dem minimalen ASCII-Code zurückgegeben werden?


Wenn Sie sich die ASCII-Codes der Elemente ansehen, stellt sich beispielsweise heraus, dass Großbuchstaben niedrigere Codes als Kleinbuchstaben haben. Die Funktion min()gibt das Zeichen der Zeichenfolge mit dem kleinsten Code zurück.

min('strings') #=> 'g'

28. Wie überprüfe ich, ob eine Zeichenfolge nur alphanumerische Zeichen enthält?


Alphanumerische Zeichen umfassen Buchstaben und Zahlen. Um diese Frage zu beantworten, können Sie die Methode verwenden isalnum().

'Ten10'.isalnum() #=> True
'Ten10.'.isalnum() #=> False

29. Wie entferne ich Leerzeichen am Anfang einer Linie (von der linken Seite), vom Ende (von der rechten Seite) oder auf beiden Seiten einer Linie?


Hier Methoden lstrip(), rstrip()und jeweils sind nützlich für uns strip().

string = '  string of whitespace    '
string.lstrip() #=> 'string of whitespace    '
string.rstrip() #=> '  string of whitespace'
string.strip() #=> 'string of whitespace'

30. Wie kann überprüft werden, ob eine Zeichenfolge mit einer bestimmten Zeichenfolge beginnt oder mit einer bestimmten Zeichenfolge endet?


Um diese Frage zu beantworten, können Sie jeweils auf die Methoden startswith()und zurückgreifen endswith().

city = 'New York'
city.startswith('New') #=> True
city.endswith('N') #=> False

31. Wie codiere ich eine Zeichenfolge in ASCII?


Mit dieser Methode encode()können Sie Zeichenfolgen mit der angegebenen Codierung codieren. Die Standardcodierung wird verwendet utf-8. Wenn ein bestimmtes Zeichen mit der angegebenen Codierung nicht dargestellt werden kann, wird ein Fehler generiert UnicodeEncodeError.

'Fresh Tuna'.encode('ascii')
#=> b'Fresh Tuna'
'Fresh Tuna Â'.encode('ascii')
#=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)

32. Woher weiß ich, dass eine Zeichenfolge nur Leerzeichen enthält?


Es gibt eine Methode isspace(), die Truenur zurückgibt , wenn die Zeichenfolge nur aus Leerzeichen besteht.

''.isspace() #=> False
' '.isspace() #=> True
'   '.isspace() #=> True
' the '.isspace() #=> False

33. Was passiert, wenn Sie eine Zeile mit 3 multiplizieren?


Es wird eine neue Zeile erstellt, die die ursprüngliche Zeile darstellt, die dreimal wiederholt wurde.

'dog' * 3
# 'dogdogdog'

34. Wie wird das erste Zeichen jedes Wortes in Großbuchstaben geschrieben?


Es gibt eine Methode title(), bei der der erste Buchstabe jedes Wortes in einer Zeichenfolge in Großbuchstaben geschrieben wird.

'once upon a time'.title() #=> 'Once Upon A Time'

35. Wie kombiniere ich zwei Zeilen?


Mit dem Operator können Sie Zeichenfolgen verketten +.

'string one' + ' ' + 'string two' 
#=> 'string one string two'

36. Wie verwende ich die partition () -Methode?


Die Methode partition()unterbricht den String durch den angegebenen Teilstring. Danach wird das Ergebnis als Tupel zurückgegeben. Darüber hinaus ist der Teilstring, entlang dem der Abbau durchgeführt wurde, auch im Tupel enthalten.

sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
#=> ('If you', ' want ', 'to be a ninja')

37. Zeilen in Python sind unveränderlich. Was bedeutet das?


Die Tatsache, dass Zeichenfolgen unveränderlich sind, legt nahe, dass ein Zeichenfolgenobjekt nach dem Erstellen nicht mehr geändert werden kann. Beim „Ändern“ von Zeichenfolgen ändern sich die ursprünglichen Zeichenfolgen nicht. Stattdessen werden völlig neue Objekte im Speicher erstellt. Sie können dies mit der Funktion beweisen id().

proverb = 'Rise each day before the sun'
print( id(proverb) )
#=> 4441962336
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
#=> 4442287440

Beim Verketten 'Rise each day before the sun'und ' if its a weekday'im Speicher wird ein neues Objekt mit einer neuen Kennung erstellt. Wenn sich das ursprüngliche Objekt ändern würde, hätten die Objekte dieselbe Kennung.

38. Wenn Sie dieselbe Zeile zweimal deklarieren (in 2 verschiedene Variablen schreiben) - wie viele Objekte werden im Speicher erstellt? 1 oder 2?


Ein Beispiel für eine solche Arbeit mit Zeichenfolgen ist das folgende Codefragment:

animal = 'dog'
pet = 'dog'

Bei diesem Ansatz wird nur ein Objekt im Speicher erstellt. Als ich zum ersten Mal darauf stieß, schien es mir nicht intuitiv zu sein. Dieser Mechanismus hilft Python jedoch, Speicher zu sparen, wenn Sie mit langen Zeichenfolgen arbeiten.

Dies kann durch den Rückgriff auf eine Funktion bewiesen werden id().

animal = 'dog'
print( id(animal) )
#=> 4441985688
pet = 'dog'
print( id(pet) )
#=> 4441985688

39. Wie verwende ich die Methoden maketrans () und translate ()?


Mit dieser Methode maketrans()können Sie die Zuordnung eines Zeichens zu einem anderen beschreiben und eine Konvertierungstabelle zurückgeben.

Mit dieser Methode translate()können Sie die angegebene Tabelle anwenden, um die Zeichenfolge zu konvertieren.

#  
mapping = str.maketrans("abcs", "123S")
#  
"abc are the first three letters".translate(mapping)
#=> '123 1re the firSt three letterS'

Bitte beachten Sie, dass die Bar von Symbolen Ersatz gemacht wird a, b, cund sjeweils die Symbole 1, 2, 3und S.

40. Wie entferne ich Vokale aus einer Zeichenfolge?


Eine Antwort auf diese Frage ist, dass Zeichen in einer Zeichenfolge mithilfe des Listenverständnismechanismus sortiert werden. Symbole werden durch Vergleich mit einem Tupel mit Vokalen überprüft. Wenn das Zeichen nicht im Tupel enthalten ist, wird es an eine neue Zeile angehängt.

string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
#=> 'Hll 1 Wrld 2'

41. In welchen Situationen verwenden Sie die Methode rfind ()?


Die Methode rfind()ähnelt der Methode find(), find()scannt jedoch im Gegensatz dazu die Zeichenfolge nicht von links nach rechts, sondern von rechts nach links und gibt den Index des ersten gefundenen Auftretens des erforderlichen Teilstrings zurück.

story = 'The price is right said Bob. The price is right.'
story.rfind('is')
#=> 39

Zusammenfassung


Ich erkläre oft einem Produktmanager, einer Person im Alter, dass Entwickler keine Wörterbücher sind, in denen Beschreibungen von Objektmethoden gespeichert sind. Aber je mehr Methoden sich der Entwickler erinnert, desto weniger muss er googeln und desto schneller und angenehmer wird er arbeiten. Ich hoffe, dass Sie jetzt die hier diskutierten Fragen leicht beantworten können.

Liebe Leser! Was ist mit dem Umgang mit Strings in Python? Würden Sie denjenigen raten, die sich auf ein Interview vorbereiten?


All Articles