2017-01-15 6 views
-4

Я искал переполнение стека, но не могу найти правильный код для исправления, например.Верхние буквы после '.', '!' а также '?' знаки в Python

"hello! are you tired? no, not at all!" 

В:

"Hello! Are you tired? No, not at all!" 
+0

Разделить строку на символы типа '.','! 'И'? '. Выполните капитализацию каждой итоговой части. Присоедините части к одной строке. Готов. – Matthias

+0

@Elgaard> stackoverflow - это не служба кодирования, а база данных с готовым кодом. Речь идет о помощи друг другу в решении конкретных проблем, возникающих при решении проблемы. Поэтому начинайте кодирование самостоятельно, и если и когда у вас есть конкретная проблема, вернитесь с конкретным вопросом. – spectras

+0

@spectras ... Ничего себе отличный ответ от вас! Слушаю, я студент в DTU Denmark в качестве инженера (3-й семестр) и начал курс Python. Я не профессионал, как вы, но я пытаюсь найти информацию в Интернете. Уже много программировал себя! Извините, что испортил вам день. – Elgaard

ответ

0

Вы могли бы сделать что-то вроде

x = "hello! are you tired? no, not at all!" 
y = x.split("? ") 
z="" 
for line in y: 
    z = "{} {}".format(z,line.capitalize()) 
print(z) 

и настроить его под свои нужды.

+0

Спасибо, RnRoger! :) Я попробую это. – Elgaard

+0

np ^^. Я не использовал его для работы с несколькими разделительными символами (например, «?» AND «!») – RnRoger

2
  1. Использование регулярных выражений для разделения на знаки препинания
  2. Присоединяйтесь все обратно с прописных букв в начале предложения.

Например, как это:

import re 
text = 'hello! are you tired? no, not at all!' 
punctuation = '.!?' 

punc_filter = re.compile('([{}] *)'.format(punctuation)) 
split_with_punctuation = punc_filter.split(text) 

final = ''.join([i.capitalize() for i in split_with_punctuation]) 
print(final) 

Выход:

>>> Hello! Are you tired? No, not at all! 
2

Вы можете попробовать это регулярное выражение подход:

import re 
re.sub("(^|[.?!])\s*([a-zA-Z])", lambda p: p.group(0).upper(), s) 
# 'Hello! Are you tired? No, not at all!' 

  • (^|[.?!]) соответствует началу строки ^ или .?!, за которой следуют дополнительные пробелы;
  • [a-zA-Z] соответствует букве непосредственно после первого образца;
  • использовать лямбда-функцию для преобразования захваченной группы в верхний регистр;
Смежные вопросы