1

我有一些 html 文件,其中包含指向文件名包含空格的文件的链接。例如,

The rain in spain ... 
<a href="/path/filename with space.xls">Filename</a>
falls mainly on the plain.

<a href="/path/2nd filename with space.doc">2nd Filename</a>

文件中通常有多个这样的链接。我想仅替换文件名本身中的空格,但不要触摸文件中其他地方的空格。例如:

<a href="/path/filename_with_space.xls">Filename</a>

我已经尝试过使用 SED,但我似乎无法将替换隔离在 2 个正则表达式模式之间(sed 似乎逐行工作)。

任何援助将不胜感激。

4

1 回答 1

3

不要对这个问题使用正则表达式。使用 html 解析器。这是 Python 中使用 BeautifulSoup 的解决方案:

from BeautifulSoup import BeautifulSoup

with open('Path/to/file', 'r') as content_file:
    content = content_file.read()

soup = BeautifulSoup(content)
for a in soup.findAll('a')
  a['href'] = a['href'].replace(" ", "_")

with open('Path/to/file.modified', 'w') as output_file:
    output_file.write(str(soup))
于 2013-04-03T19:11:19.503 回答