0

我有两个文件,内容如下。我的问题是,在下面显示的代码中,如果 id 在 file1 和 file2 中匹配,那么如何匹配 file1 中的第二列和 file2 中对应的第二列直到 n 列..

   def process(file):
     pt = []
     f=open(file)
     for l in f: 
       parts=l.strip().split('\t')
        if len(parts) < 3:
          print 'error with either ur input file or field check parts'
          break
        else:
          pt.append(parts)
     return pt
   arr1 = process(file1)
   arr2 = process(file2)                  
   for arr in arr1:
     if arr[0] in arr2:
        //then match arr1[1] with arr2[1] and so on and get the results

文件1:

ID674097256 voice tech department
ID674097257 NA NA
ID674097399 chat  order processing department

文件2:

ID674097212 voice tech department
ID674097257 NA NA
ID674097399 chat  new processing department
4

4 回答 4

0

这个问题对我来说并不完全清楚,但我认为你正在尝试做

for arr in arr1:
    for a in arr2:
        if a[0] == arr[0]:
             print a
             print arr
             # compare the rest of the fields

但是,就性能而言,这可能不是最佳选择。考虑对文件进行排序,看看诸如逐行比较两个不同文件之类的问题,并在第三个文件中写出差异 - Python等。

于 2012-06-01T11:17:09.903 回答
0

采用zip

for (a1, a2) in zip(arr1, arr2):
  if a1[0] == a2[0]:
      ##  do something.
于 2012-06-01T11:17:13.080 回答
0

如果我理解正确,您需要匹配文件中的相同行。此代码可能对您的任务有帮助:

>>> s = range(10)
>>> s
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> s2 = range(20)
>>> s2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> matching = {}
>>> for i, k in zip(s,s2):
...     matching[i] = k
...
>>> matching
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
>>>
于 2012-06-01T11:25:30.423 回答
0

此代码将第一个数组的每一行与第二个数组的每一行进行比较。如果行相同(如果列表相同),则将该行放入列表“行”中,并删除行的重复实例。

    rows = [row1 for row1 in arr1 for row2 in arr2 if row1 == row2]
    rows = list(set(rows))
于 2012-06-01T11:53:49.973 回答