「python docx 改行 段落」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
python-docxで、段落と改行の違いがどう扱われるのかを調べていた方による検索だろうと推測しています。
段落と改行を確認するWordファイル
python-docxでWordファイルを読み込んで、確認しましょう。
以下のような段落と改行を含んだsample.docxを、Cドライブtempフォルダーに用意します。
段落が3つ存在し、2つ目の段落は空白の段落で、
最初の段落
これは、最初の段落です。
と3つ目の段落
こちらは、空白の段落の次に存在する3つ目の段落です。
は、いずれも「、」の直後に改行を含んでいます。
Wordファイルの全段落を出力する
上記の準備をしてから以下のスクリプトを実行すると、C:\temp\sample.docxの中身が出力されます。
doc = docx.Document(r'C:\temp\sample.docx')
for i, para in enumerate(doc.paragraphs,start=1):print(f'--{i}--')
print(para.text)
結果は以下のとおりです。
--1--
これは、
最初の段落です。
--2-- --3--
こちらは、
空白の段落の次に存在する3つ目の段落です。
enumerate関数を組み合わせたfor文で、
for i, para in enumerate(doc.paragraphs,start=1):
print(f'--{i}--')
いくつ目の段落かを示す数値が、
--1--
--2--
--3--
と出力され、
その次の行に、Paragraphオブジェクトのtextで取得した各段落の文字列が出力されています。
print(para.text)
2つ目の段落は空白の段落ですから「--2--」の次の行は空白で、改行を含む段落は出力した文字列も改行されています。
文書を読み込みリストに格納するスクリプト
以下のスクリプトを実行すると、改行の扱いを、もっと可視化できます。
doc = docx.Document(r'C:\temp\sample.docx')
all_text = []for para in doc.paragraphs:
all_text.append(para.text)
print(all_text)
各段落の文字列を、list.appendメソッドでリストall_textの要素として格納して、
all_text = []
for para in doc.paragraphs:
all_text.append(para.text)
最後にリストのままprintしています。
print(all_text)
実行すると今度は、
['これは、\n最初の段落です。', '', 'こちらは、\n空白の段落の次に存在する3つ目の段落です。']と出力されます。
各段落の文字列がリストの要素となり、改行は「\n」として出力されています。
Paragraphs.textの公式ドキュメトにTabs and line breaks in the XML are mapped to \t and \n characters respectively.
と書かれているとおりです。
最終更新日時:2021-01-02 15:56
Home » Python » python-docxの使い方 » python-docxでWordファイルを読み込み段落と改行を確認する