2017-02-10 5 views
0

件名ごとに、各行を改行で文字列に印刷しようとしています。以下に示す現在のコードと出力を使用して、以下に示す「正しい出力」を返す構文は何ですか?Python - 改行時に各文を印刷する

コード

sentence = 'I am sorry Dave. I cannot let you do that.' 

def format_sentence(sentence): 
    sentenceSplit = sentence.split(".") 
    for s in sentenceSplit: 
     print s + "." 

出力

I am sorry Dave. 
I cannot let you do that. 
. 
None 

正しい出力あなたがこれを行うことができます

I am sorry Dave. 
I cannot let you do that. 
+0

ヒント:文はピリオド以上で区切られています。 –

+2

既に回答済みです。http://stackoverflow.com/questions/17618149/divide-string-by-line-break-or-period-with-python-regular-expressions –

答えて

2

def format_sentence(sentence) : 
    sentenceSplit = filter(None, sentence.split(".")) 
    for s in sentenceSplit : 
     print s.strip() + "." 
0

実装にはいくつかの問題があります。まず、Jarvisが回答で指摘しているように、区切り文字が文字列の最初または最後の文字の場合、または2つの区切り文字が隣り合っている場合はNoneが配列に挿入されます。これを修正するには、Noneの値を除外する必要があります。また、+演算子を使用する代わりに、代わりに書式設定を使用してください。

def format_sentence(sentences): 
    sentences_split = filter(None, sentences.split('.')) 
    for s in sentences_split: 
     print '{0}.'.format(s.strip()) 
0

または1つのライナー:

print(".\n".join(map(lambda s: s.strip(), str.split('.')))) 

ケア:この方法は、(意図的に?)複数を削除します空白ドットの前と後の

0

次の方法で文字列を分割することができます代わりに「」 msgstr "" "で、各行に追加の"。 "最後のものまで、 "。"既に。

def format_sentence(sentence): 
    sentenceSplit = sentence.split(". ") 
    for s in sentenceSplit[:-1]: 
     print s + "." 
    print sentenceSplit[-1] 
関連する問題