/ / konvertovanie zoznamu na reťazec a jeho vytlačenie zo zoznamu python - python-3.x

konverzie zoznamu na reťazec a jeho vytlačenie python - list, python - 3.x

Snažím sa previesť prvé písmeno každého slova reťazca na veľké písmená v pythone. Ale stále sa dostávam generator object at 0x10315b8> žiadny príspevok predtým, ako sa zdá, že odpovedá na moju otázku.

def capitalize(str):
newstr = str.split(" ")
newlist = []
for word in newstr:
if word[0][0] == word[0][0].upper():
newlist.append(word[0][0].upper())
newlist.append(word[0][1:])
newlist.append(" ")
convert_first = (str(w) for w in newlist)
print(convert_first)
capitalize(input("enter some string"))#calling the function

odpovede:

1 pre odpoveď č. 1

Váš problém spočíva v tom, ako sa snažíte vytvoriť reťazec zo zoznamu reťazcov. Opakom "rozdelenia" reťazca do zoznamu je "spojenie" zoznamu do reťazca.

def capitalize(str):
newstr = str.split(" ")
newlist = []
for word in newstr:
newlist.append(word[0].upper() + word[1:])
convert_first = " ".join(newlist)
print(convert_first)
capitalize(input("enter some string"))#calling the function

Poznámka: Pokúsil som sa, aby bol môj kód čo najbližší tomu, ktorý je v otázke.

Tiež, prečo je tam if vyhlásenie vo vašom kóde? S tým na mieste si "re naozaj len zúžitkovať všetky slová, ktoré sú už kapitalizované a odhodiť zvyšok, pretože nikdy robiť to do newlist."


0 pre odpoveď č. 2

Existuje niekoľko problémov s vaším kódom:

  1. Chybové hlásenie, ktoré ste dostali, je pre pokus o tlač convert_first, čo je generátor, nie reťazec.

  2. newstr je zoznam slov, takže word je reťazec a word[0] je už prvý znak. Nemá význam word[0][0] alebo word[0][1:].

  3. if word[0][0] == word[0][0].upper(): len filtruje všetky slová, ktorých prvý znak nie je veľkými písmenami ...

Takže jednoducho nejaký kód urobí to, čo ste opísali:

def capitalize(str):
newstr = str.split(" ")
newlist = []
for word in newstr:
newlist.append(word[0].upper())
newlist.append(word[1:])
newlist.append(" ")
convert_first = "".join(w for w in newlist)
print(convert_first)
capitalize(input("enter some string"))

Alebo tí, ktorí uprednostňujú krátky kód a výrazy generátora:

def capitalize(str):
print(" ".join(word[0].upper() + word[1:] for word in str.split(" ")))
capitalize(input("enter some string"))

To tiež odstraňuje medzeru v priestore vygenerovaného reťazca, ktorý môže byť (nie) tým, čo ste zamýšľali.