请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 73194|回复: 67

【每日一坑 3】 找数字

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-12-17 19:11:45 |显示全部楼层

昨天的坑,已经有很多人填了。python一行代码就可以搞定这件事,有很多人直接就在微信里回复了解答:
sorted(set(li))

其中li是一个包含重复元素的list。当然你还需要更多一些代码让这个程序更完整。

论坛上也有c语言的版本,相比之下要比python长很多。不过我觉得这只是不同语言的特性不一样,适合不同的场景,并无优劣之分。平常解决一些小问题,我更喜欢用python。

今天的坑:
有一个字符串
text = "aAsmr3idd4bgs7Dlsf9eAF"

请将text字符串中的数字取出,并输出成一个新的字符串。


#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

18

积分

新手上路

Rank: 1

发表于 2013-12-17 19:23:33 |显示全部楼层

回帖奖励 +5

正则表达式

re.findall(r'[\d|.]+',text)
回复

使用道具 举报

0

主题

0

好友

20

积分

新手上路

Rank: 1

发表于 2013-12-17 19:42:36 |显示全部楼层

回帖奖励 +5

  1. import re

  2. text = "aAsmr3idd4bgs7Dlsf9eAF"
  3. print ''.join(re.findall(r'[\d|.]+',text))
复制代码
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

发表于 2013-12-17 20:21:39 |显示全部楼层

回帖奖励 +5

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Copyright 2013 nodejx
  4. text = "aAsmr3idd4bgs7Dlsf9eAF"
  5. NewString=''.join([i for i in text if i.isdigit()])
  6. print NewString
复制代码
回复

使用道具 举报

0

主题

0

好友

389

积分

中级会员

Rank: 3Rank: 3

发表于 2013-12-17 21:58:51 |显示全部楼层

回帖奖励 +5

NewString.py
  1. #! /usr/bin/env python
  2. # coding:utf-8

  3. import sys

  4. if __name__ == "__main__":
  5.     if len(sys.argv) == 1:
  6.         print 'Please Input like this:./NewString.py aAsmr3idd4bgs7Dlsf9eAF'
  7.     else:
  8.         originString = sys.argv[1]
  9.         digitalList = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
  10.         newString = ''.join([i for i in originString if i in digitalList])
  11.         print newString
复制代码
回复

使用道具 举报

0

主题

0

好友

79

积分

注册会员

Rank: 2

发表于 2013-12-17 23:57:51 |显示全部楼层

回帖奖励 +5

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <sys/types.h>

  4. int main(int argc, const char *argv[])
  5. {
  6.   char *s;
  7.   int len;

  8.   s = "aAsmr3idd4bgs7Dlsf9eAF";
  9.   len = strlen(s);

  10.   int i;
  11.   for (i = 0; i < len; i++)
  12.   {
  13.     if (isdigit(s[i]))
  14.       printf("%c", s[i]);
  15.   }

  16.   printf("\n");

  17.   return 0;
  18. }
复制代码
回复

使用道具 举报

7

主题

1

好友

269

积分

中级会员

Rank: 3Rank: 3

发表于 2013-12-18 10:00:25 |显示全部楼层
  1. text = "aAsmr3idd4bgs7Dlsf9eAF"
  2. #只保留数字
  3. list(filter(str.isdigit, text))
  4. #只保留字母
  5. list(filter(str.isalpha, text))
复制代码
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

发表于 2013-12-18 10:07:47 |显示全部楼层
初学者,用笨方法实现的
  1. text = "aAsmr3idd4bgs7Dlsf9eAF"
  2. num = ''

  3. for i in range(len(text)):
  4.     if text[i].isnumeric():
  5.         num += text[i]
复制代码
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

发表于 2013-12-18 13:17:27 |显示全部楼层
  1. # -*- coding: utf-8 -*-

  2. '''
  3. 今天的坑:
  4. 有一个字符串
  5. text = "aAsmr3idd4bgs7Dlsf9eAF"

  6. 请将text字符串中的数字取出,并输出成一个新的字符串。
  7. '''

  8. import re

  9. def numonly(text):
  10.         num = re.findall(r'\d+', text)
  11.         print num
  12.         print ''.join(num)


  13. text = "aAsmr3idd4bgs7Dlsf9eAF"

  14. numonly(text)
复制代码
回复

使用道具 举报

0

主题

0

好友

66

积分

注册会员

Rank: 2

发表于 2013-12-18 14:19:28 |显示全部楼层
  1. import re
  2. p = re.compile(r'\d')
  3. text = "aAsmr3idd4bgs7Dlsf9eAF"
  4. new_text = ''.join(p.findall(text))
复制代码
回复

使用道具 举报

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

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

GMT+8, 2024-3-28 17:40 , Processed in 0.020204 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部