tomer 发表于 2014-11-16 22:25

判断字母

本帖最后由 tomer 于 2014-11-16 22:26 编辑

统计字母出现的次数
#!coding=utf-8
import string
import sys
def tongji(str):
    str1=list(str)
    str2={}
    for string in str1:
      if string.isalpha()==True:
         str2=str2.get(string,0)+1
    for string in str2:
      print("{0} occur {1}".format(string,str2))   
if __name__=='__main__':
f=open("d:\\file.txt","r")
for eachline in f:
   tongji(eachline)
file.txt的内容为:adfeife df的发疯erqapfdanfeiurepoefu832k
f运行结果
e occur 6
d occur 3
n occur 1
r occur 2
发 occur 1
o occur 1
p occur 2
f occur 7
疯 occur 1
的 occur 1
q occur 1
u occur 2
i occur 2
k occur 1
a occur 3
string.isalpha()把字符"的""疯"都判断成字母了?

tomer 发表于 2014-11-17 08:51

>>> "啊".isalpha()
True
>>>
string.isalpha()不是判断是否为字母吗?

bikong0411 发表于 2014-11-17 09:44

sky-MacBook-Pro➜/tmpᐅcat 1.py
#!/usr/bin/env python
#coding: utf-8
print "啊".isalpha()
sky-MacBook-Pro➜/tmpᐅpython 1.py
False
sky-MacBook-Pro➜/tmpᐅecho $LANG
zh_CN.UTF-8

tomer 发表于 2014-11-17 09:59

>>> # -*- coding=UTF-8 -*-
...
>>> "啊".isalpha()
True
>>>

tomer 发表于 2014-11-17 10:55

回复 3# bikong0411


    # export LANG=zh_CN.UTF-8
# python 3.py
File "3.py", line 2
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte
# more 3.py
#coding=utf-8
print("你".isalpha())
#

love_shift 发表于 2014-11-17 11:04

本帖最后由 love_shift 于 2014-11-17 12:39 编辑

try:
string.letters>>> from collections import Counter
>>> import string
>>> s = 'adfeife df的发疯erqapfdanfeiurepoefu832k'
>>> n = [ x for x in s if x in string.letters ]
>>> for k,v in Counter(n).iteritems():
...   print k,v
...
a 3
e 6
d 3
f 6
i 2
k 1
o 1
n 1
q 1
p 2
r 2
u 2

ssfjhh 发表于 2014-11-17 15:25

import string
import sys第一行,已经告诉过你,python自带的str已经有很多功能,包括你要用到的功能,你没有先吧python的基础学好了,就学人家用什么库。

第二个,你知道是什么意思吗?你的代码里就没有用到这个库,你为毛要加这样一行?好玩?

Linux_manne 发表于 2014-11-17 17:24

本帖最后由 Linux_manne 于 2014-11-17 17:25 编辑

回复 7# ssfjhh


    说得好。。 我实在是看不下去了..... 碰到问题 自己都不先动动脑子.....

tomer 发表于 2014-11-17 17:29

回复 7# ssfjhh


    加上了,报错与这个有关系吗

tomer 发表于 2014-11-17 17:36

回复 6# love_shift
#coding=utf-8
from collections import Counter
import string
s = 'adfeife df吓到 erqapfdanfeiurepoefu832k'
n = [ x for x in s if x in string.letters ]
for k,v in Counter(n).iteritems():
   print(k,v)
Traceback (most recent call last):
File "E:\pythonspace\p\src\t2.py", line 5, in <module>
    n = [ x for x in s if x in string.letters ]
File "E:\pythonspace\p\src\t2.py", line 5, in <listcomp>
    n = [ x for x in s if x in string.letters ]
AttributeError: 'module' object has no attribute 'letters'
页: [1] 2
查看完整版本: 判断字母