Trying to get the first letter of every word in a list - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Trying to get the first letter of every word in a list (/thread-31822.html) |
Trying to get the first letter of every word in a list - DanielCook - Jan-05-2021 I am trying to take out the first letter of every word in a list. It is not working. I believe the fault to be on line 9 but i can't figure out why. def initialise(userText): lst = [] firstLetters = [] for i in userText: lst.append(i) firstLetters.append(lst[0]) for x in lst: if x == " ": position = lst.index(x) + 1 firstLetters.append(lst[position]) userText = ''.join(firstLetters) return userText text = input("Enter text: ") print(initialise(text)) RE: Trying to get the first letter of every word in a list - perfringo - Jan-05-2021 Isin't the objective to get first letter of every word in a string? If this is the case then simple 'split on space and get first letter' comprehension would do: >>> text = 'Life, Universe and Everything' >>> ''.join(word[0] for word in text.split()) 'LUaE' RE: Trying to get the first letter of every word in a list - deanhystad - Jan-05-2021 Getting back to the original post question, index() will not work because you can have repeating letters. You could use enumerate to iterate through the user text. def initialise(userText): firstLetters = userText[0] for index, letter in enumerate(userText): if letter == " ": firstLetters += userText[index+1] return firstLettersA problem with this approach is it assumes the next letter after a space is the start of a word. This fails for us older folks who follow a period with two spaces, and it would crash if you entered a trailing space. A safer solution is to set a flag to let you know that you are in a break and looking for the start of the next word. def initialise(userText): punctuation = ' .,:;()"' firstLetters = '' start = True for letter in userText: if letter in punctuation: start = True elif start: firstLetters += letter start = False return firstLetters print(initialise('This is a test. It works for (some) punctuaton.')) |