【问题标题】:How to filter out specific characters using Regex in Python如何在 Python 中使用正则表达式过滤掉特定字符
【发布时间】:2021-09-22 01:30:53
【问题描述】:

我需要使用正则表达式从数据集中的字符串中过滤掉特定字符。如何在数字之间过滤掉数字和“-”符号,在字母字符之间跳过“-”符号,导致我现在使用的正则表达式过滤掉每个“-”任何字母数字字符之间的符号,以及数字字符之间的符号。

例子:

问题:“非营利组织管理,100-200 名员工” 当前结果:“非营利组织管理,员工” 期望的结果:“非营利组织管理、员工”

if 'business' in row.keys():
            row['business'] = re.sub("[0-9-][0-9]*", '', str(row['business']))

【问题讨论】:

  • 在 R 中?还是 Python?
  • 我是用 Python 做的

标签: python regex string data-cleaning


【解决方案1】:

您需要使用表达式 \d+-\d+ 以将所有 - 包括数字 (\d) 替换为空字符串。

print(re.sub("\d+-\d+ *", "", "Non-Profit Organization management, 100-200 employees"))

结果为“非营利组织管理,员工”

注意,我在模式中添加了 *,也是为了删除数字后的空格。

建议: 如果您多次执行此操作,我建议您执行以下操作:

import re
pattern = re.compile("\d+-\d+ *")
print(pattern.sub("", "Non-Profit Organization management, 100-200 employees"))

所以 Python 不需要每次都编译模式。

【讨论】:

  • @tahkhawaja 如果对您有帮助,请将任何答案标记为已解决:D –
  • \d[\d,]*-\d[\d,]* *
  • 你可以使用 [^PATTERN] 来否定一个模式,所以[^\d]
  • 给我输入&输出,我可以写一个合适的模式
  • 那是代码:nekobin.com/caharudaqa.py 你可以看到它在任何assert 中都没有失败,所以这意味着一切正常。
【解决方案2】:

在python中:

string = "Non-Profit Organization management, 100-200 employees"
re.sub("(\d+)-(\d+)", "", string)

输出:

'Non-Profit Organization management,  employees'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多