如何用Python/Pandas为Excel的AR列添加分类标签列?
用Python/Pandas实现阿拉伯语/拉丁语词汇标签分类
这需求很清晰,咱们可以用Pandas结合正则表达式快速搞定,步骤如下:
1. 准备工作
首先确保你已经安装了pandas和openpyxl(用来读取Excel文件),没装的话先跑这行命令:
pip install pandas openpyxl
2. 核心实现代码
直接上完整可运行的代码,我会逐段解释逻辑:
import pandas as pd import re def classify_ar_content(text): # 先把输入转为字符串,避免空值或非字符串类型报错 text_str = str(text) # 移除所有数字、英文句号和逗号(这些是允许的无关字符) cleaned_text = re.sub(r'[0-9.,]', '', text_str).strip() # 检查是否包含阿拉伯语字符(覆盖标准阿拉伯语Unicode范围U+0600到U+06FF) has_arabic = bool(re.search(r'[\u0600-\u06FF]', cleaned_text)) # 检查是否包含拉丁语(英文)大小写字母 has_latin = bool(re.search(r'[a-zA-Z]', cleaned_text)) # 根据检查结果返回对应标签 if has_arabic and not has_latin: return 'ar' elif has_latin and not has_arabic: return 'en' elif has_arabic and has_latin: return 'enar' else: # 处理极端情况:移除无关字符后无有效字符(用户说明所有行都含数字/.,,大概率不会触发) return 'unknown' # 读取你的Excel文件 df = pd.read_excel('your_file.xlsx') # 应用分类函数生成新列 df['new column'] = df['AR'].apply(classify_ar_content) # 可选:把带标签的结果保存回新Excel文件 df.to_excel('labeled_vocab.xlsx', index=False)
3. 代码逻辑拆解
- 正则处理部分:
re.sub(r'[0-9.,]', '', text_str):把单元格里的数字、.和,全部移除,只保留需要判断的核心字符。[\u0600-\u06FF]:精准匹配所有标准阿拉伯语字符,覆盖日常使用的字母、符号。[a-zA-Z]:匹配所有英文(拉丁语系)大小写字母。
- 分类规则:
- 仅含阿拉伯语字符 → 返回
ar - 仅含拉丁语字符 → 返回
en - 两者同时存在 → 返回
enar
- 仅含阿拉伯语字符 → 返回
- 容错处理:用
str(text)避免空值报错,加unknown标签处理极端异常情况。
4. 验证示例数据
我把你给出的示例数据做成测试用DataFrame跑了一遍,结果完全符合预期:
# 示例测试数据 sample_data = { 'EN': ['Appel', 'Appel (1990)', 'R. Appel', 'Red, Appel', 'Red Appel', 'R. Appel', 'Red, Appel', 'Red Appel'], 'AR': ['تفاحة', '(1990) تفاحة', 'ر. تفاحة', 'Red Appel', 'Red Appel', 'R. Appel', 'تفاحة، Red', 'Red تفاحة'] } sample_df = pd.DataFrame(sample_data) sample_df['new column'] = sample_df['AR'].apply(classify_ar_content) print(sample_df)
输出的new column列和你提供的示例完全一致。
内容的提问来源于stack exchange,提问作者Charax
相关产品推荐
相关产品推荐

