亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4244 | 回復(fù): 11
打印 上一主題 下一主題

[文本處理] 如何將兩個(gè)文本按要求整合在一起? [復(fù)制鏈接]

論壇徽章:
1
白羊座
日期:2014-11-13 10:19:16
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-10-16 08:38 |只看該作者 |倒序?yàn)g覽
本帖最后由 iocg 于 2014-10-17 16:51 編輯

A B兩張表的格式一樣,以逗號(hào)分割。
只有前5個(gè)域全部對(duì)應(yīng)才能確認(rèn)唯一的一條記錄

A為申請(qǐng)表
  1. 京,張三,A,1235,TOYOTA,,申請(qǐng),
  2. 津,李四,D,1237,HONDA,,申請(qǐng),
  3. 冀,王五,C,1235,MAZDA,,申請(qǐng),
  4. 皖,小明,D,1233,BUICK,,申請(qǐng),
  5. 內(nèi)蒙古,小黃,E,1236,SATURN,,申請(qǐng),
  6. 遼,小黃,F,1236,SUBARU,,申請(qǐng),
  7. 京,張三,A,1235,LEXUS,,申請(qǐng),
  8. 津,李四,D,1238,HONDA,,申請(qǐng),
  9. 冀,王五,E,1235,MAZDA,,申請(qǐng),
  10. 皖,小紅,D,1233,BUICK,,申請(qǐng),
復(fù)制代碼
B為調(diào)整表(按順序執(zhí)行)
  1. 京,張三,A,1235,TOYOTA,,調(diào)整,
  2. 津,李四,D,1237,HONDA,,撤銷,
  3. 滬,小雨,B,1237,CITROEN,,添加,
  4. 冀,王五,C,1235,MAZDA,,調(diào)整,
  5. 京,張三,A,1235,TOYOTA,,撤銷,
  6. 皖,小明,D,1233,BUICK,,調(diào)整,
  7. 吉,小胡,A,1237,Bentley,,添加,
  8. 滬,小雨,B,1237,CITROEN,,撤銷,
復(fù)制代碼
現(xiàn)在想將兩張表合并。。
有如下幾種可能性(申請(qǐng)、調(diào)整、添加、撤銷):
A 申請(qǐng)  B  調(diào)整 --》  刪除申請(qǐng)保留調(diào)整
A 申請(qǐng)  B  撤銷 --》  刪除申請(qǐng)
A 無     B  添加 --》  添加新的一條記錄
A 申請(qǐng)  B  調(diào)整 撤銷 --》 保留申請(qǐng)
A 無     B  添加 撤銷  --》 不添加記錄

就是保留最后一條指令有效,如果最后一個(gè)是撤銷,就否定前一個(gè)指令。
A 申請(qǐng)  B  調(diào)整  撤銷  調(diào)整 撤銷    --》還是申請(qǐng)指令


最終效果是
  1. 京,張三,A,1235,TOYOTA,,申請(qǐng),
  2. 內(nèi)蒙古,小黃,E,1236,SATURN,,申請(qǐng),
  3. 遼,小黃,F,1236,SUBARU,,申請(qǐng),
  4. 京,張三,A,1235,LEXUS,,申請(qǐng),
  5. 津,李四,D,1238,HONDA,,申請(qǐng),
  6. 冀,王五,E,1235,MAZDA,,申請(qǐng),
  7. 皖,小紅,D,1233,BUICK,,申請(qǐng),
  8. 冀,王五,C,1235,MAZDA,,調(diào)整,
  9. 皖,小明,D,1233,BUICK,,調(diào)整,
  10. 吉,小胡,A,1237,Bentley,,添加,
復(fù)制代碼
沒有順序上的要求..

論壇徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
2 [報(bào)告]
發(fā)表于 2014-10-16 10:21 |只看該作者
回復(fù) 1# iocg


    冀,王五,E,1235,MAZDA,

LZ先解釋下這為什么會(huì)有兩條吧。。。從你的規(guī)則沒看明白

論壇徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
3 [報(bào)告]
發(fā)表于 2014-10-16 10:25 |只看該作者
回復(fù) 1# iocg

    結(jié)果與LZ要求不一致,實(shí)在是不理解為啥LZ期望結(jié)果里面同一人為啥會(huì)有多條記錄。。
  1. cat a b|awk 'BEGIN{FS=OFS=","}{NF--;d=$NF;NF--;if(d=="撤銷")delete b[$0","a[$0]-1];else {a[$0]++;b[$0","a[$0]]=$0","d}}END {for(i in b) print b[i]}'|awk -F, '{a=$0;gsub(/,.*$/,"",a);b[a]=$0}END{for(i in b)print b[i]}'
  2. 滬,小雨,B,1237,CITROEN,,添加
  3. 津,李四,D,1238,HONDA,,申請(qǐng)
  4. 遼,小黃,F,1236,SUBARU,,申請(qǐng)
  5. 吉,小胡,A,1237,Bentley,,添加
  6. 京,張三,A,1235,TOYOTA,,調(diào)整
  7. 冀,王五,C,1235,MAZDA,,調(diào)整
  8. 皖,小紅,D,1233,BUICK,,申請(qǐng)
  9. 內(nèi)蒙古,小黃,E,1236,SATURN,,申請(qǐng)
復(fù)制代碼

論壇徽章:
23
15-16賽季CBA聯(lián)賽之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午馬
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16賽季CBA聯(lián)賽之山東
日期:2017-12-21 16:39:1915-16賽季CBA聯(lián)賽之廣東
日期:2016-01-19 13:33:372015亞冠之山東魯能
日期:2015-10-13 09:39:062015亞冠之西悉尼流浪者
日期:2015-09-21 08:27:57
4 [報(bào)告]
發(fā)表于 2014-10-16 10:37 |只看該作者
本帖最后由 ly5066113 于 2014-10-16 10:41 編輯

回復(fù) 1# iocg


try:
  1. awk -F, -v OFS=, '{c=$(NF-1);NF=5;k=$0}NR==FNR{if(c=="撤銷"&&a[k])delete a[k];else a[k]=c;next}{$7=a[k]?a[k]:c;NF=8}$7!="撤銷";END{for(i in a)if(a[i]=="添加")print i",,"a[i]","}' B A
復(fù)制代碼

論壇徽章:
1
白羊座
日期:2014-11-13 10:19:16
5 [報(bào)告]
發(fā)表于 2014-10-16 18:38 |只看該作者
回復(fù) 2# bulletmarquis

   
        冀,王五,E,1235,MAZDA,,申請(qǐng),
        冀,王五,C,1235,MAZDA,,調(diào)整,

        這是兩條記錄,E和C不一樣。。。只有前面5個(gè)完全對(duì)應(yīng)才是同一條。


論壇徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
6 [報(bào)告]
發(fā)表于 2014-10-17 08:50 |只看該作者
回復(fù) 5# iocg


    我擦。。。。狗眼已瞎。。。

論壇徽章:
1
白羊座
日期:2014-11-13 10:19:16
7 [報(bào)告]
發(fā)表于 2014-10-17 16:49 |只看該作者
本帖最后由 iocg 于 2014-10-17 17:06 編輯

回復(fù) 4# ly5066113

您的結(jié)果有些出入,可以修改下代碼嗎?
  1. awk -F, -v OFS=, '{c=$(NF-1);NF=5;k=$0}NR==FNR{if(c=="撤銷"&&a[k])delete a[k];else a[k]=c;next}{$7=a[k]?a[k]:c;NF=8}$7!="撤銷";END{for(i in a)if(a[i]=="添加")print i",,"a[i]","}' B A
復(fù)制代碼
京,張三,A,1235,TOYOTA,,,撤銷,
津,李四,D,1237,HONDA,,,撤銷,
冀,王五,C,1235,MAZDA,,調(diào)整,
皖,小明,D,1233,BUICK,,,調(diào)整,
內(nèi)蒙古,小黃,E,1236,SATURN,,,申請(qǐng),
遼,小黃,F,1236,SUBARU,,,申請(qǐng),
京,張三,A,1235,LEXUS,,,申請(qǐng),
津,李四,D,1238,HONDA,,,申請(qǐng),
冀,王五,E,1235,MAZDA,,申請(qǐng),
皖,小紅,D,1233,BUICK,,,申請(qǐng),
吉,小胡,A,1237,Bentley,,添加,

有三處地方不正確:
津,李四,D,1237,HONDA,,申請(qǐng),
津,李四,D,1237,HONDA,,撤銷,  ==》撤銷上一條申請(qǐng)命令,結(jié)果是刪除此條記錄

京,張三,A,1235,TOYOTA,,申請(qǐng),
京,張三,A,1235,TOYOTA,,調(diào)整,
京,張三,A,1235,TOYOTA,,撤銷,  ==》撤銷上一條調(diào)整命令,結(jié)果是維持申請(qǐng)命令

吉,小胡,A,1237,Bentley,,添加,  ==》直接添加一條新記錄

論壇徽章:
23
15-16賽季CBA聯(lián)賽之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午馬
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16賽季CBA聯(lián)賽之山東
日期:2017-12-21 16:39:1915-16賽季CBA聯(lián)賽之廣東
日期:2016-01-19 13:33:372015亞冠之山東魯能
日期:2015-10-13 09:39:062015亞冠之西悉尼流浪者
日期:2015-09-21 08:27:57
8 [報(bào)告]
發(fā)表于 2014-10-17 17:28 |只看該作者
回復(fù) 7# iocg


代碼沒問題,用你1樓給的文本測(cè)試。

論壇徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
9 [報(bào)告]
發(fā)表于 2014-10-19 16:21 |只看該作者
學(xué)生黨:飄過~簡(jiǎn)單寫一個(gè),樓主以后把需求寫清除嗯,讓我猜了半天終于想明白你的結(jié)果怎么來的了~

  1. $ cat yhsafe.py
  2. #!/usr/bin/env python
  3. # -*- coding: gbk -*-

  4. import sys,operator
  5. import linecache

  6. class com_tabls(object):
  7.         def __init__(self):
  8.                 self.a_list=[]
  9.                 self.b_list=[]
  10.         #整理文件
  11.         def zl(self,list):
  12.                 dic_t={tuple(x.strip('\n').strip(',').split(',')[:5]):[] for x in list}
  13.                 for x in list:
  14.                         x=x.strip('\n').strip(',')
  15.                         key=(x.split(',')[0],x.split(',')[1],x.split(',')[2],x.split(',')[3],x.split(',')[4])
  16.                         val=x.split(',')[6]
  17.                         dic_t[key].append(val)
  18.                 return dic_t
  19.         #輸出結(jié)果
  20.         def pt(self,alist,blist):
  21.                 dset=set(blist.keys())-set(alist.keys())
  22.                 sset=set(blist.keys())&set(alist.keys())
  23.                 aset=set(alist.keys())-set(blist.keys())
  24.                 for x in aset:
  25.                         print ' '.join(x),'申請(qǐng)'
  26.                 for x in dset:
  27.                         lg=len(blist[x])
  28.                         if lg==1:
  29.                                 if blist[x][-1]=='調(diào)整':
  30.                                         print ' '.join(x),'調(diào)整'
  31.                                 elif blist[x][-1]=='添加':
  32.                                         print ' '.join(x),'添加'
  33.                                 elif blist[x][-1]=='撤銷':
  34.                                         pass
  35.                                 else:
  36.                                         print ' '.join(x),alist[x][-1]
  37.                         elif lg>1:
  38.                                 if blist[x][-1]=='調(diào)整':
  39.                                         print ' '.join(x),'調(diào)整'
  40.                                 elif blist[x][-1]=='添加':
  41.                                         print ' '.join(x),'添加'
  42.                                 elif blist[x][-1]=='撤銷':
  43.                                         pass
  44.                                 else:
  45.                                         print ' '.join(x),alist[x][-1]
  46.                 for x in sset:
  47.                         lg=len(blist[x])
  48.                         if lg==1:
  49.                                 if blist[x][-1]=='調(diào)整':
  50.                                         print ' '.join(x),'調(diào)整'
  51.                                 elif blist[x][-1]=='添加':
  52.                                         print ' '.join(x),'添加'
  53.                                 elif blist[x][-1]=='撤銷':
  54.                                         pass
  55.                                 else:
  56.                                         print ' '.join(x),alist[x][-1]
  57.                         elif lg>1:
  58.                                 if blist[x][-1]=='調(diào)整':
  59.                                         print ' '.join(x),'調(diào)整'
  60.                                 elif blist[x][-1]=='添加':
  61.                                         print ' '.join(x),'添加'
  62.                                 elif blist[x][-1]=='撤銷':
  63.                                         print ' '.join(x),alist[x][-1]
  64.                                 else:
  65.                                         print ' '.join(x),blist[x][-1]


  66. if __name__=='__main__':
  67.         xm=com_tabls()
  68.         alist=linecache.getlines(sys.argv[1])
  69.         blist=linecache.getlines(sys.argv[2])
  70.         aznli=xm.zl(alist)
  71.         bznli=xm.zl(blist)
  72.         xm.pt(aznli,bznli)
復(fù)制代碼
測(cè)試:
$ ./yhsafe.py a.txt b.txt
冀 王五 E 1235 MAZDA 申請(qǐng)
皖 小紅 D 1233 BUICK 申請(qǐng)
京 張三 A 1235 LEXUS 申請(qǐng)
內(nèi)蒙古 小黃 E 1236 SATURN 申請(qǐng)
津 李四 D 1238 HONDA 申請(qǐng)
遼 小黃 F 1236 SUBARU 申請(qǐng)
吉 小胡 A 1237 Bentley 添加
皖 小明 D 1233 BUICK 調(diào)整
京 張三 A 1235 TOYOTA 申請(qǐng)
冀 王五 C 1235 MAZDA 調(diào)整

論壇徽章:
6
處女座
日期:2014-04-02 16:07:17酉雞
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龍
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
10 [報(bào)告]
發(fā)表于 2014-10-20 15:02 |只看該作者
  1. awk -F, 'NR==FNR{t=$1","$2","$3","$4","$5;a[t]=$7;next} {t=$1","$2","$3","$4","$5;b[t]=b[t]?b[t]" "$7:$7}END{for(i in b){split(b[i],p," ");if(length(p)%2==0&&p[length(p)]=="撤銷"){b[i]=""}else{b[i]==p[length(p)]}};for(i in a){if(a[i]=="申請(qǐng)"&&b[i]=="調(diào)整"){c[i]=i",,調(diào)整,"}else if(a[i]=="申請(qǐng)"&&b[i]=="撤銷"){;}else if(a[i]=="申請(qǐng)"&&b[i]==""){c[i]=i",,申請(qǐng),"}};for(i in b){if(b[i]=="添加"){c[i]=i",,添加,"}};for(i in c){print c[i] > "/tmp/sh/t"}}' A B
復(fù)制代碼
大神果然厲害 這么短就解決了..
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP