Ich bin mir bewusst. Capitalize() Großbuchstaben den ersten Buchstaben einer Zeichenfolge, aber was ist, wenn das erste Zeichen eine ganze Zahl ist?Python Großschreibung ersten Buchstaben nur
dieses
1bob
5sandy
diesen
1Bob
5Sandy
Ich bin mir bewusst. Capitalize() Großbuchstaben den ersten Buchstaben einer Zeichenfolge, aber was ist, wenn das erste Zeichen eine ganze Zahl ist?Python Großschreibung ersten Buchstaben nur
dieses
1bob
5sandy
diesen
1Bob
5Sandy
Wenn das erste Zeichen eine ganze Zahl ist, wird es die ersten Buchstaben nicht nutzen.
>>> '2s'.capitalize()
'2s'
Wenn Sie die Funktionalität wollen, sind die Ziffern abzustreifen, können Sie '2'.isdigit()
verwenden für jedes Zeichen zu überprüfen.
>>> s = '123sa'
>>> for i, c in enumerate(s):
... if not c.isdigit():
... break
...
>>> s[:i] + s[i:].capitalize()
'123Sa'
kam ich mit auf den Punkt:
import re
regex = re.compile("[A-Za-z]") # find a alpha
str = "1st str"
s = regex.search(str).group() # find the first alpha
str = str.replace(s, s.upper(), 1) # replace only 1 instance
print str
funktioniert nicht, wenn kein Alpha vorhanden ist –
Nur weil sonst niemand erwähnt hat:
>>> 'bob'.title()
'Bob'
>>> 'sandy'.title()
'Sandy'
>>> '1bob'.title()
'1Bob'
>>> '1sandy'.title()
'1Sandy'
Dies ist jedoch auch
>>> '1bob sandy'.title()
'1Bob Sandy'
>>> '1JoeBob'.title()
'1Joebob'
dh geben würde, es macht nicht nur die ersten Buchstaben zunutze c Zeichen. Aber dann .capitalize()
hat das gleiche Problem, zumindest in diesem 'joe Bob'.capitalize() == 'Joe bob'
, so meh. Hier
ist ein One-Liner, der den ersten Buchstaben groß geschrieben werden und bei allen nachfolgenden Buchstaben lassen:
import re
key = 'wordsWithOtherUppercaseLetters'
key = re.sub('([a-zA-Z])', lambda x: x.groups()[0].upper(), key, 1)
print key
Dies führt in WordsWithOtherUppercaseLetters
Dies ist ähnlich @ Anon Antwort, dass Es behält den Rest des String-Falls intakt, ohne dass das re-Modul benötigt wird.
def upperfirst(x):
return x[0].upper() + x[1:]
x = 'thisIsCamelCase'
y = upperfirst(x)
print(y)
# Result: 'ThisIsCamelCase' #
Wie @Xan wies darauf hin, könnte die Funktion mehr Fehler verwenden Überprüfung (wie, dass x Überprüfung ist eine Folge - aber ich Rand Fällen bin Weglassen der Technik zu veranschaulichen)
Sehr nützlich, aber benötigt a 'len (x) == 0' Verzweigung. – Xan
seit Python 2.5 kann der leere Fall noch in einer Zeile behandelt werden: 'return x [0] .upper() + x [1:] if len (x)> 0 else x' – danio
Sehr nützliche Antwort, weil' groß geschrieben '&' title' Kleinbuchstaben zuerst den ganzen String und dann Großbuchstaben nur den ersten Buchstaben. –
Sie ersetzen die Anfangsbuchstaben (preceded by a digit
) jedes Wort regex:
re.sub(r'(\d\w)', lambda w: w.group().upper(), '1bob 5sandy')
output:
1Bob 5Sandy
Als here von Chen Houwu beantwortet zu sehen, dann ist es möglich, String-Paket zu verwenden:
import string
string.capwords("they're bill's friends from the UK")
>>>"They're Bill's Friends From The Uk"
ein Einzeiler: ' '.join(token_text[:1].upper() + token_text[1:] for sub in text.split(' '))
Ich frage, wie die erste Alpha-Charakter – user1442957
zu nutzen und das ist, was diese Antwort der Fall ist, so ziemlich – njzk2
ich, wenn c.isalpha() statt, wenn nicht c verwenden würde. isdigit() – njzk2