在Python中从String中删除char

Dav*_*ias 0 python string replace char

我试图从python中不想要的字符串中删除一些字符,但据我所知,替换函数应该工作得很好,但它不是:(

顺便说一下(这只是一个简单的wordcount函数)

fileName = "simple.txt"
inputFile = open(fileName, "rb")

wordCount = {}

for line in inputFile:
    splitted = line.split(" ")
    for word in splitted:
        word.replace('\n','') #It's not removing this chars from words
        word.replace('?','')  #Nor this ones

        if word in wordCount:
            wordCount[word] = wordCount[word] + 1
        else:
            wordCount[word] = 1

print wordCount
Run Code Online (Sandbox Code Playgroud)

输入

在你称他为男人之前,男人必须走多少条道路?在她睡在沙滩之前,一只白色的鸽子必须航行多少海?是的,在他们被永远禁止之前,炮弹必须飞多少次?答案是我的朋友在风中吹来答案在风中吹来.

是的,一座山可以存在多少年才能被冲到海里?是的,有些人可以存在多少年才能获得自由?是的,一个男人可以转过头多少次假装他只是看不到?答案是我的朋友在风中吹来答案在风中吹来.

是的,男人必须看多少次才能真正看到天空?是的,一个人必须拥有多少耳朵才能听到人们哭泣?是的,在知道有太多人死亡之前需要多少人死亡?答案是我的朋友在风中吹来答案在风中吹来.

产量

{'耳朵':1,'是,':7,'允许':1,'知道\n':1,'睡觉':1,'人':3,'海':1,'是': 6,'\n':2,'some':1,'it':1,'walk':1,'How':2,'see':1,"blowin":6,'have': 1,'in':7,'roads':1,'up \n':1,'free?\n':1,'cry?\n':1,'really':1,'one': 1,'山':1,'他':4,'只':1,'到':2,"它是":1,'死亡':1,'洗':1,'头\n': 1,'how':7,'down \n':1,'call':1,'take':1,'Pretending':1,'answer':6,'have \n':1,'white ':1,'必须':5,"不":1,'朋友':3,'可':5,'是':1,'航行\n':1,'他':1, 'wind \n':3,'sea?\n':1,'cannon':1,'until':1,'看??n':1,'风.\n':3,'男人? \n':1,'你':1,'禁止?\n':1,'听':1,'也':1,'天空?\n':1,''':6,'沙子?\n':1,'鸽子':1,'他':1,'男':4,'a':6,"他们是":2,'永远':1,'球':1 ,'看':1,'飞'n:1,'很多':10,'存在\n':2,'时间':3,'将':1,'转':1,'死了? \n':1,'她':1,''':10,'年':2,'我的':3,'那':1,'之前':7}

谢谢!

Mar*_*ers 5

.replace() 返回更改的字符串.存储返回值:

word = word.replace('\n','') 
Run Code Online (Sandbox Code Playgroud)

你可以链接替换调用:

word = word.replace('\n','').replace('?','')
Run Code Online (Sandbox Code Playgroud)

字符串是不可变的,它们不能就地更改.

最后但并非最不重要:用于collections.Counter()计算单词,它提供了许多额外的功能,使频率计数的处理更容易:

from collections import Counter

with open(fileName, "rb") as inputFile:
    wordCount = Counter(w.replace('?', '')
        for line in inputFile for w in line.split())
Run Code Online (Sandbox Code Playgroud)

wordCount用一行创建你的结构.请注意,这.split()将有效地为您删除额外的空格和换行符.

请注意,如果要从单词的开头或结尾删除标点符号,则应该使用该.strip()方法:

wordCount = Counter(w.strip('.,:?')
    for line in inputFile for w in line.split())
Run Code Online (Sandbox Code Playgroud)

其中.strip('.,:?')将删除参数中列出的开头或结尾的所有字符.