特殊字符后数据截断处理:从指定字符串提取国家名称列表
提取字符串中的国家名称并格式化
需求说明
输入字符串:
INDIA-001 UNIT1-RUNNING, AUSTRIA-002 UNIT2-RUNNING, CHINA-003 UNIT1-RUNNING , JAPAN-004 UNIT2-ONHOLD.,
需要处理成仅包含国家名称的结果:
INDIA,AUSTRIA,CHINA,JAPAN
几种实用处理方法
方法1:Python代码实现
通过字符串分割提取核心内容,逻辑直白:
input_str = "INDIA-001 UNIT1-RUNNING, AUSTRIA-002 UNIT2-RUNNING, CHINA-003 UNIT1-RUNNING , JAPAN-004 UNIT2-ONHOLD.," # 按逗号拆分条目,过滤空内容并去除前后空格 items = [item.strip() for item in input_str.split(',') if item.strip()] # 提取每个条目里第一个'-'之前的国家名 countries = [item.split('-')[0] for item in items] # 用逗号拼接成最终结果 result = ','.join(countries) print(result)
方法2:正则表达式匹配
用正则直接定位所有国家名的特征(大写字母后跟-),一次性提取:
import re input_str = "INDIA-001 UNIT1-RUNNING, AUSTRIA-002 UNIT2-RUNNING, CHINA-003 UNIT1-RUNNING , JAPAN-004 UNIT2-ONHOLD.," # 匹配所有大写字母组成、后面紧跟'-'的字符串 countries = re.findall(r'[A-Z]+(?=-)', input_str) result = ','.join(countries) print(result)
方法3:Linux命令行工具(sed)
终端环境下直接用sed批量替换冗余内容:
echo "INDIA-001 UNIT1-RUNNING, AUSTRIA-002 UNIT2-RUNNING, CHINA-003 UNIT1-RUNNING , JAPAN-004 UNIT2-ONHOLD.," | sed -E 's/(-[0-9]+ [A-Z0-9-]+,? *)|(\.$)//g' | sed 's/ /,/g'
内容的提问来源于stack exchange,提问作者Shri Nivi
相关产品推荐
相关产品推荐

