如何在QGIS中将单列中的两种语言拆分至两列
QGIS中拆分双语列至两列的Python脚本修改方案
你可以通过调整正则表达式分别匹配两种语言的字符,同时更新两个目标字段来实现需求。以下是适配场景的修改版脚本:
import re # 修改以下参数匹配你的图层和字段名 layer = QgsProject.instance().mapLayersByName("plingplong")[0] source_field = "fielda" # 包含双语的源字段 english_target_field = "English" # 存储英文的目标字段 arabic_target_field = "Arabic" # 存储阿拉伯语的目标字段 # 获取两个目标字段的索引 eng_field_idx = layer.fields().indexFromName(english_target_field) arab_field_idx = layer.fields().indexFromName(arabic_target_field) new_attributes = {} # 匹配英文(大小写字母+空格)和阿拉伯语(Unicode核心字符范围)的正则 eng_pattern = r"[a-zA-Z\s]+" arab_pattern = r"[\u0600-\u06FF\s]+" for feature in layer.getFeatures(): source_text = feature[source_field] # 提取英文内容并清理多余空格 english_text = ' '.join(re.findall(eng_pattern, source_text)).strip() # 提取阿拉伯语内容并清理多余空格 arabic_text = ' '.join(re.findall(arab_pattern, source_text)).strip() # 同时记录两个字段的更新值 new_attributes[feature.id()] = { eng_field_idx: english_text, arab_field_idx: arabic_text } # 批量更新属性值 layer.dataProvider().changeAttributeValues(new_attributes)
使用步骤:
- 先在图层属性表中添加两个字符串类型的新字段(比如命名为
English和Arabic) - 替换脚本开头的图层名、源字段名、目标字段名,确保与你的数据对应
- 在QGIS的Python控制台中运行脚本
脚本通过正则分别匹配英文(大小写字母及空格)和阿拉伯语(Unicode编码范围\u0600-\u06FF覆盖标准阿拉伯字符)的内容,再将提取出的文本分别写入对应目标字段。
内容的提问来源于stack exchange,提问作者Bruno B
相关产品推荐
相关产品推荐

