设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 7027|回复: 6
打印 上一主题 下一主题

作业的第二题【我没用正则~。~

[复制链接]

2

主题

0

好友

26

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2013-8-18 22:01:08 |只看该作者 |倒序浏览
本来我觉得正则应该是最简单的
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
回复

使用道具 举报

3

主题

0

好友

29

积分

新手上路

Rank: 1

沙发
发表于 2013-8-18 22:10:26 |只看该作者
学习了。你这个获取ASCII码的方法,和我正则取范围没差啊。而且取正则比较直观写,

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


我们又不用像孔乙己一样了解回字的四种写法,了解一种足矣。。
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

板凳
发表于 2013-8-18 22:21:21 |只看该作者
学习了,这种方法好诶!赞一个。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2013-8-18 23:20:51 |只看该作者
lz是混acfun的吗?
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

26

积分

新手上路

Rank: 1

5#
发表于 2013-8-19 17:10:03 |只看该作者
sageskr 发表于 2013-8-18 22:10
学习了。你这个获取ASCII码的方法,和我正则取范围没差啊。而且取正则比较直观写,

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

嗯嗯嗯 我也觉得正则最简单
7.gif
就是想了有人用了我想换个法子
13.gif
回复

使用道具 举报

2

主题

0

好友

26

积分

新手上路

Rank: 1

6#
发表于 2013-8-19 17:12:39 |只看该作者
ss360du 发表于 2013-8-18 22:21
学习了,这种方法好诶!赞一个。

谢谢~。~
24.gif
回复

使用道具 举报

2

主题

0

好友

26

积分

新手上路

Rank: 1

7#
发表于 2013-8-19 17:13:43 |只看该作者
crossin先生 发表于 2013-8-18 23:20
lz是混acfun的吗?

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-13 08:55 , Processed in 0.020197 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部