Crossin的编程教室

标题: 作业的第二题【我没用正则~。~ [打印本页]

作者: 网管    时间: 2013-8-18 22:01
标题: 作业的第二题【我没用正则~。~
本来我觉得正则应该是最简单的
18.gif
但是有人已经提交了啊啊啊啊啊
9.gif
所以就去想有没有什么别的法子
29.gif
结果想到前两天我一直被坑的中文转码
15.gif
就有了下面的:
  1. #-*- coding: utf-8
  2. #把文件打开 然后读取 然后关上
  3. f = file('d:/crossin_class/from.txt')
  4. data = f.read()
  5. print data
  6. f.close()

  7. #这个函数是用来判断一个字符是否是英文
  8. def En_check(cha):
  9.   #ord是将字符的ASCLL或者UNICODE码返回
  10.     x = ord(cha)

  11.   #在这里测得返回英文的是ASCLL码 那么97~122是小写 65~90是大写
  12.     if x >= 97 and x <= 122:
  13.         return True
  14.     elif x >=65 and x <=90:
  15.         return True
  16.     else:  return False

  17. #分离器
  18. def En_split(data):
  19.     #这个是收集所有的单词的
  20.   En = []
  21. #这个用来收集单个单词
  22.     En_gather = ""
  23. #这个用来切换
  24.     flag = True

  25.   #把每个字符提出来进行判断
  26.     for cha in data:
  27.        #如果发现是英文状态切换一次
  28.         if not flag and En_check(cha):
  29.             flag = True
  30.      #如果是中文就先把状态切回来
  31.         elif not En_check(cha) and flag:
  32.             flag = False
  33.           #然后把单词收集到
  34.             if En_gather != "":
  35.                 En.append(En_gather)
  36.       #这里是状态切换好后将每个英文字符存到En_gather里
  37.         if flag:
  38.             En_gather += cha
  39.        #如果不是了就将En_gather清空
  40.         else:
  41.             En_gather = ""
  42.    
  43.     #最后一个
  44.     if En_gather != "":
  45.         En.append(En_gather)

  46.     return En

  47. print En_split(data)

  48. group = En_split(data)

  49. for word in group:
  50.     print word.decode('utf-8')

  51. group.sort()

  52. print group

  53. #把每个单词都打进去
  54. out = open('d:/crossin_class/to.txt','w')
  55. for word in group:
  56. out.write(word)
  57. #单词之间要有空格 这样比较好看~。~
  58. out.write(' ')
  59. out.close()
复制代码
然后我在写完之后发现了个问题
4.gif
这种动不动就转码的习惯不是还是C++的风格嘛
学python学了个毛线啊啊啊啊!!
摔!!
1.gif

作者: sageskr    时间: 2013-8-18 22:10
学习了。你这个获取ASCII码的方法,和我正则取范围没差啊。而且取正则比较直观写,

只要懂了。自己敲一边理解含义就好了


我们又不用像孔乙己一样了解回字的四种写法,了解一种足矣。。
作者: ss360du    时间: 2013-8-18 22:21
学习了,这种方法好诶!赞一个。
作者: crossin先生    时间: 2013-8-18 23:20
lz是混acfun的吗?
作者: 网管    时间: 2013-8-19 17:10
sageskr 发表于 2013-8-18 22:10
学习了。你这个获取ASCII码的方法,和我正则取范围没差啊。而且取正则比较直观写,

只要懂了。自己敲一边 ...

嗯嗯嗯 我也觉得正则最简单
7.gif
就是想了有人用了我想换个法子
13.gif
作者: 网管    时间: 2013-8-19 17:12
ss360du 发表于 2013-8-18 22:21
学习了,这种方法好诶!赞一个。

谢谢~。~
24.gif

作者: 网管    时间: 2013-8-19 17:13
crossin先生 发表于 2013-8-18 23:20
lz是混acfun的吗?

其实我是大B站的 但是AC娘的图包太经典了 就用了 B站娘没有什么特色的其实~。~




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5