用re.sub()方法,去掉不是 ‘中文字符和标点’ 的内容
时间: 2024-02-12 11:07:54 浏览: 224
可以使用正则表达式来匹配中文字符和标点,然后使用re.sub()方法将非中文字符和标点替换为空字符串即可。具体代码如下:
```python
import re
text = "Hello, 你好啊!123"
pattern = re.compile(r'[^\u4e00-\u9fa5。,!?]') # 匹配非中文字符和标点
result = re.sub(pattern, '', text) # 将非中文字符和标点替换为空字符串
print(result) # 输出:你好啊!
```
在上面的代码中,我们首先使用正则表达式r'[^\u4e00-\u9fa5。,!?]'来匹配非中文字符和标点,然后使用re.sub()方法将其替换为空字符串。最终输出结果为“你好啊!”
相关问题
s = re.sub("[A-Za-z0-9\:\·\—\,\。\“ \”]", "", s) 解释它
这段代码使用正则表达式 `re.sub()` 函数将字符串 `s` 中的英文字母、数字和一些特殊字符替换为空字符串。具体要替换的字符包括大写字母 A-Z、小写字母 a-z、数字 0-9,以及冒号、点、中文标点符号等。
这段代码的作用是去除字符串 `s` 中的所有英文字母、数字和一些特殊字符,只保留汉字和一些重要的标点符号。
import jieba import jieba.analyse import re def preHandel(path): st = time.time() num = 0 sentences = [] with open(path) as f: for line in f.readlines(): if line.strip() != "": # `[^\w\s]` 匹配除了字母、数字和空格之外的所有字符 content = re.sub('[^\w\s]', '', line.strip()) # jieba 分词获取词语序列 content_seq = list(jieba.cut(content)) sentences.append(content_seq) num += 1 end = time.time() print("PreHandel End Num:%s Cost:%ss" % (num, (end - st))) return sentences # 1.数据预处理 path = "./all.txt" sentences = preHandel(path)
这段代码是一个数据预处理的函数,用于将文件中的文本进行分词处理,并去除其中的标点符号。具体实现步骤如下:
1. 读取文件内容,逐行进行处理。
2. 使用正则表达式`[^\w\s]` 去除标点符号。
3. 使用 jieba 库对每一行文本进行分词处理,得到词语序列。
4. 将处理后的词语序列添加到 sentences 列表中。
5. 最终返回 sentences 列表。
需要注意的是,这段代码需要先安装 jieba 库,并且需要将需要处理的文本放在当前目录下的 all.txt 文件中。
阅读全文