2015-11-12 194 views
-1

我有一段像这样的结尾一段:如何删除逗号与字符串

柄排骨球头,法兰克福alcatra臀部培根picanha 牛肋骨干肉片猪鹿肉鸡肉火腿典当。丁骨牛肉肋骨 鸡肉猪肉干里脊肉andouille turducken凯文短肋骨。 鼓槌培根短腰,鸡turducken leberkas chuck猪 猪肚doner biltong火腿h。猪汉堡牛里脊肉饼 意大利熏火腿肉丸舌头鸡腿肉火腿。肉丸 bresaola landjaeger doner胸肉猪肚培根排骨 腌牛里脊肉培根fatback猪里脊布丁肉012 kevin andouille牛火腿capicola biltong。猪排腌牛肉 火鸡,火腿肉馅饼kielbasa短腰里地轮cupim 肩膀。

,我需要写代码,就会发现有多少次某个单词说。我无法弄清楚如何删除这些单词旁边的逗号和句号!以下是我迄今为止:

for line in input_file: 
    lines = line.split(' ') 
    lines = line.replace('\n', '') 
    new_List.append(lines) 
+0

的可能的复制[检查串与串的一个从列表结束](http://stackoverflow.com/questions/18351951/check-if-string-ends-with-one-of-the-strings-from-a-list) – MattDMo

+3

甚至更​​好,[使用Counter](https://docs.python.org/2 /library/collections.html#collections.Counter) –

回答

0
word_dict = {} 
for line in input_file: 
    line = line.replace('\n', '') 
    line = line.replace(',', '') 
    line = line.replace('.', '') 
    # now line just has words and spaces 
    words = line.split(' ') 
    for word in words: 
     if word in word_dict: 
      word_dict[word] += 1 
     else: 
      word_dict[word] = 0 
0

有几件事情,可以帮助。首先,Counter

s = '''Shank spare ribs ball tip, frankfurter alcatra rump ...''' 
c = Counter(s.split()) 

注意不将参数传递给str.split

如果可选的第二个参数SEP是不存在或无,所述字由空白字符的任意字符串(空格,制表符分隔,换行符,退货,换页)。

下,而不是Counter,你可以使用str.count计算每个单词的出现:

for word in s.split(): 
    print word, s.count(word) 

另一个选择在str.split是一个简单的regex

for word in re.findall(r'[a-zA-Z-_]+', s): 
    print word, s.count(word) 

最后,作为的一部分您的问题确切地说,您可以使用str.rstrip去除字符串末尾的字符:

s = 'foobar.,' 
t = s.rstrip('.,') 
0

你可以用计数器做到这一点很容易:

import string 
from collections import Counter 

# s = s.lower() # if you don't care about case 
chars = set(string.ascii_letters + string.whitespace) 
c = Counter(''.join(c for c in s if c in chars).split()) 
0

您可以通过非文字字符的出现,除了那些在“T骨”状-表达与使用re.split

只是分割你的字符串
import re 
from collections import Counter 

s = '''Shank spare ribs ball tip, frankfurter alcatra rump pancetta 
     picanha beef ribs biltong pig venison chicken ham hock. 
     T-bone beef ribs chicken pork jerky... 
    ''' 

Counter(re.split(r'(?!<\w)\W(?!\w)|\s+', s)) 

DEMO

但是,如果你想要的是只删除逗号和周期下面将正常工作:

Counter(re.split(r'[,\s.]', s))