You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中提取混合字符串中的阿拉伯字母?

解决方案

问题分析

你之前使用的正则[؀-ۿ]+存在两个核心问题:

  1. 字符范围包含大量非阿拉伯字母的符号(如数字标记、特殊标点),导致提取内容混杂无关字符;
  2. 未覆盖阿拉伯语的呈现形式变体(如连写字母),也未保留文本内部的空格,无法提取完整的阿拉伯语句。

可行实现方法

1. 提取为列表

使用精准匹配阿拉伯语字符(含呈现形式)和空格的正则,过滤掉纯空格的无效项,得到完整的阿拉伯语句列表:

import re

# 示例混合内容字符串
input_str = "123 hello البريد يوصل لي البطاقة 456 world لم تعد هناك حاجة الى البطاقة 789 test شلون طريقة تحديث البيانات احتاج احدث البيانات الشخصية "

# 匹配阿拉伯文本块(覆盖标准阿拉伯字母、变体及空格)
arabic_matches = re.findall(r'[\u0600-\u06FF\u0750-\u077F\uFB50-\uFDFF\uFE70-\uFEFF\s]+', input_str)
# 过滤纯空格项并去除首尾空格
arabic_sentences = [sent.strip() for sent in arabic_matches if sent.strip()]

print(arabic_sentences)

输出结果:

["البريد يوصل لي البطاقة", "لم تعد هناك حاجة الى البطاقة", "شلون طريقة تحديث البيانات", "احتاج احدث البيانات الشخصية"]

2. 转换为DataFrame

如果需要结构化存储,可将列表转为pandas DataFrame:

import pandas as pd

# 基于上面得到的arabic_sentences创建DataFrame
df = pd.DataFrame(arabic_sentences, columns=['阿拉伯语句'])
print(df)

输出结果:

阿拉伯语句
0        البريد يوصل لي البطاقة
1  لم تعد هناك حاجة الى البطاقة
2     شلون طريقة تحديث البيانات
3  احتاج احدث البيانات الشخصية

可选调整:保留阿拉伯标点

如果需要保留阿拉伯语专属标点(如问号؟、逗号،),可在正则中添加对应字符:

arabic_matches = re.findall(r'[\u0600-\u06FF\u0750-\u077F\uFB50-\uFDFF\uFE70-\uFEFF\s\u061F\u060C]+', input_str)

内容的提问来源于stack exchange,提问作者Maha Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:35:23