如何移除文本标点外所有字符?及酒店数据集字段清洗方案求助
解决方案:文本清理与酒店数据集规范化
让我们分两部分来搞定你提出的两个需求:
一、移除文本中标点符号以外所有字符
这个需求用正则表达式就能轻松实现,我给你几个常用编程语言的具体写法:
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支持)
清洗Type列:假设Type列在
A2单元格,用公式提取品牌名:=REGEXEXTRACT(A2,"\*\*(.*?)\*\*")如果要保留加粗格式,改成
=CONCAT("**",REGEXEXTRACT(A2,"\*\*(.*?)\*\*"),"**")清洗Count列:假设Count列在
C2单元格,用公式提取数字:=VALUE(REGEXEXTRACT(C2,"\d+"))
内容的提问来源于stack exchange,提问作者akash87
相关产品推荐
相关产品推荐

