如何用python提取中文文本中特定字符的前后字符?

举例:text = "移动通信公司突然要吴老板交费。吴老板看到这陌生的手机号码感到莫名其妙,陌生感又出现了。"
从这段文本中提取出现在“陌生”这个词前面和后面的两个词,或者,提取出现在“陌生”前面或后面的标点符号,包括逗号、句号、感叹号。

text = "移动通信公司突然要吴老板交费。吴老板看到这陌生的手机号码感到莫名其妙,陌生感又出现了。"
arr = text.split("陌生")
a = arr[0][-2:]
b = arr[1][:2]
print(a)
print(b)

【以下回答由 GPT 生成】

解决方案

你可以使用正则表达式来解决这个问题。具体的步骤如下:

  1. 导入re
  2. 定义你要搜索的文本,例如:text = "移动通信公司突然要吴老板交费。吴老板看到这陌生的手机号码感到莫名其妙,陌生感又出现了。"
  3. 定义你要提取的目标字符
  4. 使用正则表达式进行匹配,并提取出符合条件的字符串

下面是具体代码的示例:

import re

text = "移动通信公司突然要吴老板交费。吴老板看到这陌生的手机号码感到莫名其妙,陌生感又出现了。"
target_word = "陌生"

# 提取出现在目标字符之前的两个词
pattern_before = r"\b\w+\b\s+\b\w+\b(?=\b" + target_word + r"\b)"
before_words = re.findall(pattern_before, text)
print("出现在目标字符之前的两个词:", before_words)

# 提取出现在目标字符之后的两个词
pattern_after = r"(?<=\b" + target_word + r"\b)\b\w+\b\s+\b\w+\b"
after_words = re.findall(pattern_after, text)
print("出现在目标字符之后的两个词:", after_words)

# 提取出现在目标字符之前或之后的标点符号
pattern_punctuation = r"(?<=\b" + target_word + r"\b)[,.!]"
punctuation = re.findall(pattern_punctuation, text)
print("出现在目标字符之前或之后的标点符号:", punctuation)

运行以上代码将输出以下内容:

出现在目标字符之前的两个词: ['手机号码感到']
出现在目标字符之后的两个词: ['陌生感又出现了']
出现在目标字符之前或之后的标点符号: [',']

这样,你就可以提取出中文文本中特定字符的前后字符了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^