是否可以使用Python将文件名的一部分保存为CSV文件中的字段?我有一系列名为"000000001 8375739.html"
的HTML文件,一直到"000000021 5748922937574.html"
,我希望能够删除前10个字符(第一个数字总是9位数,然后空格)然后将文件名的其余部分(减去.html)保存到CSV文件中名为ID的字段中,然后由html文件的内容填充。事实上,我正在尝试做的是使用Beautiful Soup从HTML文件中提取文本,将第一行保存在名为“title”的字段中,将其余文本保存在名为“body”的字段中并保存名为“ID”的字段中文件名的第二部分。 html to text部分工作得很好,但是我似乎无法完成其余部分。
这是剥离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>
答案 0 :(得分:0)
fname = "000000001 8375739.html"
trash, name = fname.split(" ")
data, trash = name.split(".")
print data
--output:--
8375739
为什么你认为不发布你的html文件样本是问你问题的正确方法?在您看来,所有html文件都是相同的,因此BS可以读取文件并分离出您需要的数据吗?