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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1777 | 回復(fù): 4
打印 上一主題 下一主題

2個文件比較的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-01-16 12:09 |只看該作者 |倒序瀏覽
本帖最后由 nxzwt 于 2013-01-16 19:28 編輯

有2個文件a和b
a的內(nèi)容如下,有100多萬行
1.1.1.10     20
1.1.1.34     25
2.2.2.100   30
3.3.3.20     40
b的內(nèi)容如下,有1萬多行
1.1.1.0    1.1.1.31     財務(wù)一部
1.1.1.32   1.1.1.63    財務(wù)二部
2.2.2.0    2.2.2.127   技術(shù)部
3.3.3.0    3.3.3.63     人事部

要求從a里面讀出數(shù)據(jù),和b比較后輸出成
1.1.1.10    20    財務(wù)一部
1.1.1.34    25    財務(wù)二部
2.2.2.100   30   技術(shù)部
3.3.3.20    40    人事部

這個用python該怎么做?請高手指點,謝謝!

論壇徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龍
日期:2014-08-08 09:28:02獅子座
日期:2014-09-14 20:32:05
2 [報告]
發(fā)表于 2013-01-16 14:51 |只看該作者
本帖最后由 ssfjhh 于 2013-01-16 14:52 編輯

你只說對比,卻沒有說對比哪些東西,不夠準確。
我寫了個,看能不能滿足要求。
  1. >>> a = '''1.1.1.10     20
  2. 2.2.2.100   30
  3. 3.3.3.20     40'''
  4. >>> b = '''1.1.1.0    1.1.1.31     財務(wù)部
  5. 2.2.2.0    2.2.2.127   技術(shù)部
  6. 3.3.3.0    3.3.3.63     人事部'''
  7. >>> adict = {e[:6]:e for e in a.split('\n')}
  8. >>> bdict = {e[:6]:e for e in b.split('\n')}
  9. >>> sorted(adict[k] + (bdict[k][-4:]) for k in bdict.keys())
  10. ['1.1.1.10     20 財務(wù)部', '2.2.2.100   30 技術(shù)部', '3.3.3.20     40 人事部']
  11. >>> '\n'.join(sorted(adict[k] + (bdict[k][-4:]) for k in bdict.keys()))
  12. '1.1.1.10     20 財務(wù)部\n2.2.2.100   30 技術(shù)部\n3.3.3.20     40 人事部'
  13. >>>
復(fù)制代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2013-01-16 15:15 |只看該作者
是我沒有說清楚。
a文件有100多萬行,記錄了IP地址和某個統(tǒng)計次數(shù),比對是把a里面的IP地址和b記錄的IP地址段結(jié)果進行比對,要求核實a里面的ip地址落到b記錄的哪個部門。

論壇徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龍
日期:2014-08-08 09:28:02獅子座
日期:2014-09-14 20:32:05
4 [報告]
發(fā)表于 2013-01-17 09:25 |只看該作者
本帖最后由 ssfjhh 于 2013-01-17 09:40 編輯

我這里沒有文件,我也沒有辦法測試。你需要在文件里添加上你的文件地址。
  1. apath = ''
  2. bpath = ''
  3. acopypath = ''

  4. bdict = {}
  5. with open(bpath) as b:
  6.     for line in b:
  7.         c,d,e = tuple(line.split())
  8.         bdict[e] = (tuple(map(int, c.split('.'))), tuple(map(int,d.split('.'))))

  9. acopy = open(acopypath, 'w')
  10. with open(apath) as a:
  11.     for line in a:
  12.         for k,v in bdict.items():
  13.             if v[0] <= tuple(map(int, line.split()[0].split('.'))) <= v[1]:
  14.                 acopy.write(line.strip('\n') + '    ' + k + '\n')
  15.                     break
  16.     acopy.close()
  17. print('Write successfully')
復(fù)制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2013-01-17 09:48 |只看該作者
非常感謝!!
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP