如何用有效的代码替换单词中的标点符号?

11 浏览
0 Comments

如何用有效的代码替换单词中的标点符号?

我一直在处理一个包含很多标点符号的文件,我们需要忽略这些标点符号,以便能够计算单词的实际长度。

例如:

Is this stack overflow! ---> Is this stack overflow

在处理过程中,我为每个标点符号编写了许多情况,这使得我的代码运行缓慢。因此,我正在寻找一种使用模块或函数来实现相同功能的有效方法。

代码片段:

with open(file_name,'r') as f:
     for line in f:
         for word in line.split():
            #print word
            '''
                处理标点符号
            '''
            word = word.replace('.','')
            word = word.replace(',','')
            word = word.replace('!','')
            word = word.replace('(','')
            word = word.replace(')','')
            word = word.replace(':','')
            word = word.replace(';','')
            word = word.replace('/','')
            word = word.replace('[','')
            word = word.replace(']','')
            word = word.replace('-','')

根据这个逻辑,我写了这段代码,是否有办法将其最小化?

0
0 Comments

问题的出现原因是需要将单词中的标点符号替换成空字符,以便进行文本处理或分析。解决方法是使用正则表达式来替换字符类,具体代码如下:

import re
re.sub(r'[]!,:)([/-]', '', string)

其中:

- `[]!,:)([/-]` 是一个字符类,匹配`]`、`!`、`,`、`:`、`)`、`(`、`[`、`/`、`-`这些符号,将其替换成空字符`''`。

通过使用上述代码,可以将单词中的标点符号替换成空字符,实现了去除标点符号的目的。

0
0 Comments

问题的出现原因是Python 3中的maketrans函数已被移除,导致很多答案在Python 3中无法使用。解决方法是使用string.punctuation获取标点符号列表,并使用str.translate将其删除。

具体的解决方法如下:

import string
"hello, world !".translate({ord(k):"" for k in string.punctuation})

运行结果为:

'hello world '

translate函数的参数在Python 3中是一个字典,键是字符的ASCII码,值是替换的字符。我使用了字典推导式来创建它。

0