我做了一个函数来计算我以纯文本格式下载的一本书中最常见的20个单词。我即将离开的python教科书上说使用import string
,然后使用replace
或translate
方法来删除任何标点符号,但是当我打印出替换步骤之后的行时,所有行中仍然有标点符号。我尝试在line = line.strip()
和line = line.replace(string.punctuation,'')
步骤之间移动,但不起作用。我从来没有使用过replace,所以据我所知,我可能用错了。我的程序的其余部分都可以工作,只是这一步让我很沮丧。
import string
def function():
infile = open('gutbook.txt','r',encoding='utf-8')
count = dict()
list2 = list()
for line in infile:
line = line.strip()
line = line.replace(string.punctuation,'')
line = line.lower().split()
if line== []:
continue
for i in line:
count[i] = count.get(i,0) + 1
for key,value in count.items():
newtuple = (value,key)
list2.append(newtuple)
list3 = sorted(list2,reverse = True)
print(list3[:20])
function()
发布于 2018-06-02 05:03:21
使用正则表达式。
Ex:
import re
import string
text = "Hello ! #$%&'()*+,-./:;<=>?@[\]^_`{|}~ World"
print(re.sub("[" + re.escape(string.punctuation) + "]", "", text))
#or
print( re.sub(r'[^a-zA-Z0-9\s]','',text) )
https://stackoverflow.com/questions/50650921
复制相似问题