当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 64 篇帖子 ]  前往页数 上一页  1, 2, 3, 4, 5  下一页
作者 内容
16 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:22 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
引用:
493289488@qq.com,
lpc2300@zlgmcu.com,
steven.tao@freescale.com,1xxxx78639


结果这样的啊。

叶子改一个读入过程中输出的吧。我比较下。逐行读入的。


_________________
● 鸣学


页首
 用户资料  
 
17 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:28 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
增加了检查是否为空的
代码:
#!/bin/python
import re
r=r'ID.*?ICON'
d=open("a.txt").read()
g=re.findall(r,d,re.S)
for a in g:
    r=r'MAIL=(.*?)\n.*?PHONE=(.*?)\n'
    x=re.search(r,a,re.S)
    if x :
         m,p=(x.group(1).strip(),x.group(2).strip())
         if m and p:
             print "%s,%s"%(m,p)


逐行读入的
代码:
#!/bin/python
d=open("a.txt")
e=False
m=p=None
for a in d:
    if a.find('ICON')==0: e=True
    if a.find('MAIL')==0: m=a[5:].strip()
    if a.find('PHONE')==0: p=a[6:].strip()
    if e and m and p:
        print "%s,%s"%(m,p)
        e=False
        m=p=None


页首
 用户资料  
 
18 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:30 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
这样ok。有空改逐行读入的吧。 :D


_________________
● 鸣学


页首
 用户资料  
 
19 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:32 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
代码:
import sys

c = sys.stdin.read()

for i in c.split('#CONTACT'):
    d = {}
    for j in i.split('\n'):
        if j.find('=') >= 0:
            key, value = j.split('=', 1)
            d[key] = value
    if d.has_key('NAME') and d.has_key('PHONE'):
        sys.stdout.write('%s,%s\n' % (d['NAME'], d['PHONE']))



_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
20 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:37 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
eexpress 写道:
这样ok。有空改逐行读入的吧。 :D

在上面已经贴出。


页首
 用户资料  
 
21 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:42 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
额。第2个没输出。球猫的也没。球猫的是管道吧,没输出。文件作参数,也是“死机”。


_________________
● 鸣学


页首
 用户资料  
 
22 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:46 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
eexpress 写道:
额。第2个没输出。球猫的也没。球猫的是管道吧,没输出。文件作参数,也是“死机”。

我稍微改了下,你检查是是不是 ICON/MAIL/PHONE 的大小写问题?


页首
 用户资料  
 
23 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:48 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
额。叶子怎么检查icon mail phone啊。奇怪了。我是去name phone
不是大小写的事情。


_________________
● 鸣学


页首
 用户资料  
 
24 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:49 
头像

注册: 2007-08-05 17:40
帖子: 4979
送出感谢: 0 次
接收感谢: 6
ee你太变态了~~~~~~那么多空格要整死我啊!!!

代码:
#!/bin/sh

#ALL Variables
cleaner(){
     NAME=
     PHONE=


       #需要补全,我偷个懒好吧!只清空关键字段。
}
writer(){
[ -z "$NAME" ]||[ -z "$PHONE" ]&&return    ##其中有一个关键字段空,就不输出。
echo ${NAME},$PHONE >>  b.txt
}
while read LINE;do
    case "$LINE" in
         "")
             continue
             ;;
          \#CONTACT)
                writer
                cleaner
                ;;
            *)
                VAR=${LINE%%=*}
                VUL=${LINE##*=}
                if [ "$VAR" = "NAME" ];then
                    NAME="$VUL"
                elif [ "$VAR" = "PHONE" ];then
                    PHONE="$VUL"
                fi
                 ;;
        esac
done   < $1
writer         #保证最后一组数据写入


页首
 用户资料  
 
25 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 13:52 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
eexpress 写道:
额。叶子怎么检查icon mail phone啊。奇怪了。我是去name phone
不是大小写的事情。

检查你的文件里面是不是这几个参数是不是都是大写的?你要name?ok.

代码:
#!/bin/python
import re
r=r'CONTACT.*?ICON'
d=open("a.txt").read()
g=re.findall(r,d,re.S)
for a in g:
    r=r'NAME=(.*?)\n.*?PHONE=(.*?)\n'
    x=re.search(r,a,re.S)
    if x :
         n,p=(x.group(1).strip(),x.group(2).strip())
         if n and p:
             print "%s,%s"%(n,p)


逐行读入的
代码:
#!/bin/python
d=open("a.txt")
e=False
n=p=None
for a in d:
    if a.find('NAME')==0:
       n=a[5:].strip()
       e=True
    if a.find('PHONE')==0: p=a[6:].strip()
    if e and n and p:
        print "%s,%s"%(n,p)
        e=False
        n=p=None


页首
 用户资料  
 
26 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 14:03 
头像

注册: 2007-08-05 17:40
帖子: 4979
送出感谢: 0 次
接收感谢: 6
eexpress 写道:
额。第2个没输出。球猫的也没。球猫的是管道吧,没输出。文件作参数,也是“死机”。



猫球的可以
代码:
cat b |python a.py
binsos@googlegroups.com,1xxxxx999901


python的字典果然强大。

我还是习惯shell。

eval居然不接受IFS控制……奇特的性质!


页首
 用户资料  
 
27 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 14:25 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
多谢各位研究。

残局结束了。谢谢各位让我知道,我选择了最正确的perl。

4行有效代码。

代码:
● cat t.pl
#!/usr/bin/perl

while(<>){
chomp;
$name=$',next if /NAME=/;
print $name.",".$'."\n" if /PHONE=/ && $';
}


:em11


_________________
● 鸣学


页首
 用户资料  
 
28 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 14:34 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
:em01 EE 显摆


页首
 用户资料  
 
29 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 14:43 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
经常在irc说这些。就想比较下效率。下次开一个大型的比较。

下次请大家吃鱼。 :D


_________________
● 鸣学


页首
 用户资料  
 
30 楼 
 文章标题 : Re: ★★格式化输出,欢迎各种脚本或者语言
帖子发表于 : 2009-09-23 14:49 
头像

注册: 2007-08-05 17:40
帖子: 4979
送出感谢: 0 次
接收感谢: 6
臭显摆!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 64 篇帖子 ]  前往页数 上一页  1, 2, 3, 4, 5  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译