用python做网页与html_用python 实现中文与html实体相互转换

一些网页会把中文转为html实体,做爬虫时就需要把html实体转换为中文,下面介绍使用python 对它们作相互转换。

f2b9ffeb4a9efdeb1c652353b5d261d3.jpg

html 实体

python & #20013;& #25991;& #21644;html & #23454;& #20307;& #30456;& #20114;& #36716;& #25442;

相互转换

把html 实体和中文互转:

import re

s = 'python 中文和html 实体相互转换'

# s = 'python & #20013;& #25991;& #21644;html & #23454;& #20307;& #30456;& #20114;& #36716;& #25442;'

print s

def convert_callback(matches):

char_id = matches.group(1)

try:

return unichr(int(char_id))

except:

return char_id

s2 = re.sub("(\d+)(;|(?=\s))", convert_callback, s)

print s2

# print s2.decode('utf-8').encode('ascii','xmlcharrefreplace')

print s2.encode('ascii','xmlcharrefreplace')

输出

python & #20013;& #25991;& #21644;html & #23454;& #20307;& #30456;& #20114;& #36716;& #25442;

python 中文和html 实体相互转换

python & #20013;& #25991;& #21644;html & 23454;& #20307;& #30456;& #20114;& #36716;& #25442;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python实现CRF模型进行命名实体识别,可以使用sklearn-crfsuite这个Python包。下面是一个简单的例子: ```python import sklearn_crfsuite from sklearn_crfsuite import metrics from sklearn.model_selection import train_test_split # 加载数据 def load_data(): # 实现加载数据的逻辑,返回格式为[[[token1, label1], [token2, label2], ...], ...] pass # 特征提取 def word2features(sent, i): word = sent[i][0] features = { 'bias': 1.0, 'word.lower()': word.lower(), 'word[-3:]': word[-3:], 'word[-2:]': word[-2:], 'word.isupper()': word.isupper(), 'word.istitle()': word.istitle(), 'word.isdigit()': word.isdigit(), } if i > 0: prev_word = sent[i-1][0] features.update({ '-1:word.lower()': prev_word.lower(), '-1:word.istitle()': prev_word.istitle(), '-1:word.isupper()': prev_word.isupper(), }) else: features['BOS'] = True if i < len(sent)-1: next_word = sent[i+1][0] features.update({ '+1:word.lower()': next_word.lower(), '+1:word.istitle()': next_word.istitle(), '+1:word.isupper()': next_word.isupper(), }) else: features['EOS'] = True return features def sent2features(sent): return [word2features(sent, i) for i in range(len(sent))] def sent2labels(sent): return [label for token, label in sent] def sent2tokens(sent): return [token for token, label in sent] # 加载数据 data = load_data() # 特征提取 X = [sent2features(s) for s in data] y = [sent2labels(s) for s in data] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 训练模型 crf = sklearn_crfsuite.CRF(algorithm='lbfgs', c1=0.1, c2=0.1, max_iterations=100, all_possible_transitions=True) crf.fit(X_train, y_train) # 预测并评估 y_pred = crf.predict(X_test) print(metrics.flat_classification_report(y_test, y_pred)) ``` 上面的代码中,我们首先定义了load_data函数来加载数据。这里我们假设数据格式为[[[token1, label1], [token2, label2], ...], ...]。接着,我们定义了特征提取函数word2features和sent2features,以及标签转换函数sent2labels和sent2tokens。然后,我们使用train_test_split函数将数据集划分为训练集和测试集。接着,我们使用sklearn_crfsuite包中的CRF类创建CRF模型,并使用fit函数训练模型。最后,我们使用predict函数对测试集进行预测,并使用flat_classification_report函数评估模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值