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

R语言如何提取文本中不在允许字符集内的错误编码字符?

R语言正则匹配提取转录文本非法字符修正方案

问题根源

你的代码存在3个核心逻辑错误:

  • 正则字符集写法错误:误将所有允许字符拆分到两个独立的[]字符组中,变成匹配「第一个字符是()/中的一个、第二个字符是字母数字等字符」的连续双字符序列,完全不符合单字符匹配的需求
  • 过滤逻辑写反:filter中加了!取反,变成筛选无非法字符的行,和需求正好相反
  • 缺少空格适配:合法转录文本包含空格,需要将空格加入允许字符集,且提取结果需要把列表格式转为逗号分隔的字符串

修正后代码

library(dplyr)
library(stringr)

# 测试数据
df <- data.frame(
  Utterance = c("~°maybe you (.) >should ¥just¥<",
                "SOME text |<-- pipe¿ and€",            
                "blah%",                                
                "text ^more text",                      
                "£norm(hh)a::l£mal, (1.22)"))

# 非法字符匹配规则:^在字符组开头表示取反,匹配所有不在允许集合内的单字符
illegal_pattern <- "[^()/A-Za-z0-9↑↓£¥°!.,:¿?~<>≈=_\\s-]"

df %>%
  # 筛选存在非法字符的行
  filter(str_detect(Utterance, illegal_pattern)) %>%
  # 提取所有非法字符,转为逗号分隔字符串
  mutate(WrongChar = sapply(str_extract_all(Utterance, illegal_pattern), toString))

输出结果

Utterance WrongChar
1 SOME text |<-- pipe¿ and€      |, €
2                     blah%         %
3           text ^more text         ^

和你预期的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:10