Удаление строчных букв и перемещение знаков препинания в конце строки

#python

#python

Вопрос:

У меня есть переводчик Pig Latin, который работает, но теперь я должен придумать способ использовать строчные буквы в середине каждого слова и переместить знаки препинания в середине каждого слова в конец.

Я экспериментировал с

 if letter_index.isupper():
   new_word = letter_index.lower()
  

но это не работает. И я импортировал string и создал:

 punc = string.punctuation
  

Вот что у меня есть:

 import string

    def part2():
      fin = open('Sonnet.txt')
      vowels = 'AEIOUaeiou'
      #punc = string.punctuation
      for line in fin:
        poem = line.split()
        print(poem)
        for word in poem:
          for letter_index in range(len(word)): 
            if word[letter_index] in vowels:
              if letter_index == 0:
                if letter_index.isupper():
                  new_word = letter_index.lower()
                  print(new_word   'way') 
              else:
            print(word[letter_index:] word[0:letter_index]   'ay')
            break
part2()
  

Любые прописные слова с заглавными буквами в середине должны быть строчными, но первая буква теперь должна быть заглавной. Затем любые знаки препинания в середине слова следует переместить в конец слова.

Комментарии:

1. Каков наилучший способ завершения кода?

2. Посмотрите на str.title() и str.capitalize()

3. Есть идеи о том, как применить эти методы?

4. Да, вы просто вызываете их в строке, к которой хотите их применить: ‘aBcD’.capitalize() == ‘Abcd’

5. Чтобы переместить знаки препинания, я бы, скорее всего, использовал регулярные выражения… поиск не букв

Ответ №1:

Попробуйте

 sentence = 'pyThon jAva cpP'
words_list = sentence.split(' ')
prpoer_word_list = [w.title() for w in words_list]
print(' '.join(prpoer_word_list))
  

Вывод

 Python Java Cpp
  

Комментарии:

1. Я не думаю, что вам даже нужно разделять строку на str.title() , это приведет к тому, что каждое слово в строке будет написано с заглавной буквы.