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

Python pandas 如何判断给定字符串是否包含Country列的任意行值

基于pandas实现字符串与国家列的匹配检测

完全可以用pandas实现该检测逻辑,无需额外引入冗余依赖,具体实现步骤和方案如下:

核心实现思路

将Country列的所有取值拼接为合规的正则匹配规则,依托pandas内置的字符串处理能力,遍历列值判断哪些国家名称出现在目标字符串中,最终输出是否存在任意匹配项、以及具体命中的国家名称清单。

可直接复用的代码示例

  • 第一步:加载基础数据和目标检测字符串
import pandas as pd
import re

# 构建题目给出的示例DataFrame
country_df = pd.DataFrame({
    "Country": [
        "United Kingdom",
        "Bosnia and Herzegovina",
        "France",
        "United States",
        "Ukraine"
    ]
})

target_string = 'The United Kingdom and France are both strong jurisdictions within Europe, boasting huge markets, stable economies, and a substantial political presence. They also play a major part in the European Union.'
  • 第二步:生成匹配规则并执行检测
    为避免正则解析错误,需对国家名称中的特殊字符做转义处理,同时拼接带词边界的匹配模式,从根源上避免子串误匹配:
# 生成带转义、带词边界的匹配规则
match_pattern = r"\b(?:{})\b".format(
    "|".join(re.escape(country) for country in country_df["Country"])
)

# 筛选出目标字符串中包含的国家名称
matched_country_list = country_df[
    country_df["Country"].str.contains(match_pattern, case=False, regex=True)
]["Country"].tolist()

# 判断是否存在任意命中项
is_contain_any_country = len(matched_country_list) > 0

运行效果与注意事项

针对题中给出的目标字符串,最终运行得到的matched_country_list为['United Kingdom', 'France'],is_contain_any_country为True,与文本实际内容完全匹配。
*注意:

  • 可根据需求调整str.contains的参数:设置case=False可忽略大小写差异,避免因大小写不一致造成漏匹配;
  • 若未添加\b词边界规则,可能出现短名称匹配到长词汇内部子串的误判,比如国家名是"US"时,可能错误匹配到字符串里"bus"中的"us"片段,词边界规则可完全规避这类问题。

内容的提问来源于stack exchange,提问作者Ihor Harmatii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 12:54:03