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

如何在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)

使用步骤:

  1. 先在图层属性表中添加两个字符串类型的新字段(比如命名为English和Arabic)
  2. 替换脚本开头的图层名、源字段名、目标字段名,确保与你的数据对应
  3. 在QGIS的Python控制台中运行脚本

脚本通过正则分别匹配英文(大小写字母及空格)和阿拉伯语(Unicode编码范围\u0600-\u06FF覆盖标准阿拉伯字符)的内容,再将提取出的文本分别写入对应目标字段。

内容的提问来源于stack exchange,提问作者Bruno B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:57:13