Python を使用してファイル名の一部をフィールドとして CSV ファイルに保存することは可能ですか? たとえば、名前が付けられた一連の HTML ファイルがあり、最初の 10 文字 (最初の数字は常に 9 桁、次にスペース) を削除して、残りの部分を保存できるようにしたいと考えています"000000001 8375739.html"
。"000000021 5748922937574.html"
ファイル名 (.html を除く) を CSV ファイルの ID と呼ばれるフィールドに入力し、このフィールド自体に html ファイルの内容が入力されます。実際、私がやろうとしているのは、Beautiful Soup を使用して HTML ファイルからテキストを抽出し、最初の行を「タイトル」というフィールドに保存し、残りのテキストを「本文」というフィールドに保存して保存することです。 「ID」と呼ばれるフィールドのファイル名の 2 番目の部分。HTMLからテキストへの部分は完全に機能しますが、残りの部分を理解できないようです。
これは、HTML を取り除き、(単一の) テキスト ファイルに書き込むコードです。glob を再び使用する必要があると思いますか、それとも igloo を使用する必要がありますか?
import os
import glob
import codecs
import csv
from bs4 import BeautifulSoup
dics = [{
path = "c:\\users\\zac\\downloads\\"
for infile in glob.glob(os.path.join(path, "*.html")):
markup = (infile)
soup = BeautifulSoup(codecs.open(markup, "r", "utf-8").read())
with open("extracted.txt", "a") as myfile:
myfile.write(soup.get_text())
以下は HTML のサンプルです。すべてがまったく同じというわけではありませんが、基本的には同じ形式に従っています。
<table>
<tbody>
<tr>
<td></td>
<td></td>
<td>
<p><a>Some Sample Text</a> </p>
<p><a>A slightly larger body of text. Thus far, we see that the current python script is placing this directly under the previous text.</a> </p>
<h3><a>And a final bit of text, this has so far been placed below the previous text, making three lines of text (or more, depending on how long the middle block is).</a></h3>
<td ></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>