使用正则表达式删除标点符号不起作用

时间:2018-04-21 05:12:17

标签: python-3.x

我写了一个脚本来删除几个文本文件中的标点符号,但我看到输出仍然有标点符号。也没有错误消息。任何人都可以指导我如何使脚本工作吗?

import os
import re

directory = 'C:\\Users\\User\\Desktop\\test1'
os.chdir('C:\\Users\\User\\Desktop\\test1')

for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        f = open(filename, 'r')

def remove_punctuation(lines):
    new_lines = []
    for line in lines:
        new_line = re.sub(r'[^\w\s]', '', line)
        if new_line != '':
            new_lines.append(new_line)


        with open(filename, 'w') as out:
            out.writelines(new_lines)

脚本被修改为如下所示,但文本输出仍然没有变化,即标点符号仍然存在。

import os
import re

directory = 'C:\\Users\\User\\Desktop\\test1'
os.chdir('C:\\Users\\User\\Desktop\\test1')


for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        f = open(filename, 'r')

def remove_punctuation(line):
        new_lines = []
        for line in lines:
            new_line = re.sub(r'[^\w\s]', '', line)
            if new_line != '':
                new_lines.append(new_line)

        with open(filename, 'w') as out:
            out.writelines(remove_punctuation)

1 个答案:

答案 0 :(得分:-1)

在你的脚本中。您正在尝试匹配不带点的字符串,并将此匹配替换为空字符串。因此,当它工作时,它应该只显示点,没有内容。正如我理解你的问题,你试图删除所有要点。

这应该做的工作 re.sub(" \。","",line)

import re
line = "This .is. a test."
new_line = re.sub("\.", "", line)
print new_line