gpt4 book ai didi

python - 删除单词开头的标点符号(特殊符号除外)

转载 作者:行者123 更新时间:2023-12-01 08:34:42 27 4
gpt4 key购买 nike

问题:如何使用正则表达式删除单词开头的标点符号但保留单词 .NET

我使用了下一个正则表达式:

text = 'Must-have skills: -.Net programming experience; -2 years experience in C++.'
newtext = re.sub(r'<.*?>|&nbsp;', ' ', text)
re.sub(r'[!,.:;—](?= |$)', ' ', newtext)

我得到了下一个结果:

'Must-have skills  -.Net programming experience  -2 years experience in C++ '

期望的结果:

'Must-have skills  .Net programming experience  2 years experience in C++ '

附注:

我需要删除单词前面的所有标点符号。无需仅删除单词 .Net 中的点。例如。 -2 转换为 2,但 -.Net 转换为 .Net

最佳答案

您可以使用

import re
text = 'Must-have skills: -.Net programming experience; -2 years experience in C++.'
text = re.sub(r'[!,.:;—](?= |$)', ' ', text)
print(re.sub(r'(?i)(?:(?!\.net\b|\b-\b)[^\w\s])+(?=[^\w\s]*\b)', '', text))
# => Must-have skills .Net programming experience 2 years experience in C++

请参阅Python demo .

详细信息

  • (?i) - 不区分大小写模式开启
  • (?:(?!\.net\b|\b-\b)[^\w\s])+ - 任何标点符号 ( [^\w\s] ),出现 1 次或多次,尽可能多,但不启动任何序列:
    • \.net\b -.net作为整个单词
    • | - 或
    • \b-\b - 用单词字符括起来的连字符
  • (?=[^\w\s]*\b) - 正向前瞻,需要 0 个以上标点符号,后跟紧邻当前位置右侧的单词边界位置。

关于python - 删除单词开头的标点符号(特殊符号除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com