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

如何移除文本标点外所有字符?及酒店数据集字段清洗方案求助

解决方案:文本清理与酒店数据集规范化

让我们分两部分来搞定你提出的两个需求:


一、移除文本中标点符号以外所有字符

这个需求用正则表达式就能轻松实现,我给你几个常用编程语言的具体写法:

Python 版本

import re

def retain_only_punctuation(text):
    # \p{P}匹配标点,\p{S}匹配特殊符号,覆盖全语言场景
    return re.sub(r'[^\p{P}\p{S}]', '', text, flags=re.UNICODE)

# 测试示例
sample_text = "Hi there! 123 #$% 测试,。"
print(retain_only_punctuation(sample_text))  # 输出:! #$% ,。

JavaScript 版本

function keepOnlyPunctuation(text) {
    // u标志开启Unicode模式,确保兼容多语言标点
    return text.replace(/[^\p{P}\p{S}]/gu, '');
}

// 测试示例
const sampleText = "Hi there! 123 #$% 测试,。";
console.log(keepOnlyPunctuation(sampleText)); // 输出:! #$% ,。

二、酒店数据集规范化清洗

针对你给出的数据集,核心是把Type列的品牌名和额外描述拆分,同时确保Count列只保留数字。这里分编程和非编程两种方案:

方案1:Python Pandas(适合批量处理大数据)

假设你的数据是DataFrame格式,代码如下:

import pandas as pd
import re

# 模拟原始数据集
raw_data = {
    "ID": [1, 2, 3, 4],
    "Type": ["**Radisson**", "**Renaissance**", "**Hilton** New York Only", "**Radisson** East Cost"],
    "Count": [8, 9, "8", "8"]
}
df = pd.DataFrame(raw_data)

# 清洗Type列:提取**包裹的品牌名(如果要保留加粗,就改成r'**\1**')
df["Type"] = df["Type"].apply(lambda x: re.search(r'\*\*(.*?)\*\*', x).group(1))

# 清洗Count列:提取纯数字并转为整数
df["Count"] = df["Count"].apply(lambda x: int(re.search(r'\d+', str(x)).group()))

# 查看最终结果
print(df)

运行后输出就是你要的规范格式:

ID        Type  Count
0   1     Radisson      8
1   2  Renaissance      9
2   3       Hilton      8
3   4     Radisson      8

方案2:Excel公式(适合非编程用户,Excel 365支持)

  1. 清洗Type列:假设Type列在A2单元格,用公式提取品牌名:

    =REGEXEXTRACT(A2,"\*\*(.*?)\*\*")
    

    如果要保留加粗格式,改成=CONCAT("**",REGEXEXTRACT(A2,"\*\*(.*?)\*\*"),"**")

  2. 清洗Count列:假设Count列在C2单元格,用公式提取数字:

    =VALUE(REGEXEXTRACT(C2,"\d+"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:54:51