5

我是一个完全的 python 菜鸟,所以请多多包涵。我想让 python 扫描一个 html 页面并用 UTF-8 兼容的东西替换 Microsoft Word 实体的实例。

我的问题是,你如何在 Python 中做到这一点(我已经用谷歌搜索了这个,但到目前为止还没有找到明确的答案)?我想涉足 Python 水域,所以我认为像这样简单的事情是一个很好的起点。看来我需要:

  1. 将从 MS Word 粘贴的文本加载到变量中
  2. 对内容运行某种替换功能
  3. 输出它

在 PHP 中,我会这样做:

$test = $_POST['pasted_from_Word']; //for example “Going Mobile”

function defangWord($string) 
{
    $search = array(
        (chr(0xe2) . chr(0x80) . chr(0x98)),
        (chr(0xe2) . chr(0x80) . chr(0x99)),
        (chr(0xe2) . chr(0x80) . chr(0x9c)), 
        (chr(0xe2) . chr(0x80) . chr(0x9d)), 
        (chr(0xe2) . chr(0x80) . chr(0x93)),
        (chr(0xe2) . chr(0x80) . chr(0x94)), 
        (chr(0x2d))
    ); 

    $replace = array(
        "‘",
        "’",
        "“",
        "”",
        "–",
        "—",
        "–"
    );

    return str_replace($search, $replace, $string); 
} 

echo defangWord($test); 

你会如何在 Python 中做到这一点?

编辑:嗯,好吧,暂时忽略我对 UTF-8 和实体的困惑。输入包含从 MS Word 粘贴的文本。弯引号之类的东西显示为奇怪的符号。我曾经尝试修复它的各种 PHP 函数并没有给我想要的结果。通过在十六进制编辑器中查看这些奇怪的符号,我发现它们对应于我上面使用的符号(0xe2、0x80 等)。所以我只是用 HTML 实体替换了奇怪的字符。因此,如果我上面的位已经是 UTF-8,那么从 MS Word 中粘贴了什么会导致奇数符号?

EDIT2:所以我开始学习一些关于 Python 的知识,发现我并不真正了解编码。我试图解决的问题可以简单地通过端到端的一致编码来处理。如果输入形式是 UTF-8,则存储输入的数据库是 UTF-8,输出它的页面是 UTF-8... 从 Word 粘贴可以正常工作。不需要特殊功能。现在,关于学习一点 Python ......

4

4 回答 4

20
于 2009-04-16T02:10:31.437 回答
3

Python 代码具有相同的轮廓。

只需用 Python-isms 替换所有 PHP-isms。

首先创建一个File对象。file.read() 的结果是一个字符串对象。字符串具有“替换”操作。

于 2009-04-16T01:47:24.177 回答
2

清理 Word HTML 的最佳选择是使用HTML Tidy,它有一个专门的模式。如果需要以编程方式执行,可以使用一些 Python 包装器。

于 2009-04-16T01:53:12.447 回答
1

正如 S.Lott 所说,Python 代码将非常非常相似——唯一的区别本质上是函数调用/语句。

我认为 Python 没有直接等价于file_get_contents(),但由于您可以获得文件中的行数组,因此您可以通过换行符加入它们,如下所示:

sample = '\n'.join(open(test, 'r').readlines())

编辑:没关系,有一个更简单的方法:sample = file(test).read()

字符串替换几乎完全一样str_replace()

sample = sample.replace(search, replace)

输出就像一个print语句一样简单:

print defang_word(sample)

如您所见,这两个版本看起来几乎完全相同。

于 2009-04-16T01:54:55.610 回答