次のようなテキストファイルがあります
First col, Second col, Third col, Fourth col,...
これに似ています:
Johnny, Rodgers, ID1, 18th July,...
Johnny, Rodgers, ID1, 18th July,...
Pat, Bryant, ID2, 29th April,...
Pat, Bryant, ID2, 9th May,...
Jim, Williams, ID3, 10th March,...
Jim, Williams, ID3, 17th March,...
Jim, Williams, ID3, 21st March,...
etc
3列目に繰り返しがあるかどうかを確認したいのですが、その場合、3列目に繰り返しがある行で4列目も同じかどうかを確認します。列 3 と列 4 も同じ場合は両方の行 (行全体) を削除し、列 4 が異なる場合は結果を保存します。その後、結果を印刷/保存します。
これは、
* 行 1、2 の列 3 が同じ値で、列 4 も同じ値である場合は、両方の行を削除します
* 行 3 と 4 の列 3 が同じ値で、列 4 が異なる場合は、行とカウント +1
* 行 5、6、および 7 の列 3 の値が同じで、列 4 が異なる場合、行を出力して +1 を数えます
実行後、結果は次のようになります
Pat, Bryant, ID2, 29th April,...
Pat, Bryant, ID2, 9th May,...
Jim, Williams, ID3, 10th March,...
Jim, Williams, ID3, 17th March,...
Jim, Williams, ID3, 21st March,...
counter = 2 #Number of different ID present
私の考えでは、2 つのリストを作成してそこに行を格納することですが、ターゲットを設定して同時に他の列を比較することに成功していません。また、現在のロジックでループしてポップする必要がありますが、うまくいきません。
val = []
duplicated = []
with open('file.txt', 'rt') as myf.
for line in myf:
col = line.stip():split(',')
if col[2] not in val:
val.append( THE ROW HERE ) #How to copy and parse the row?
else:
duplicated.append( THE ROW HERE ) #Same question
#Comparisons
for x in value:
if x in dupl:
value.pop(x)
dupl.pop(x)
counter = len(val) #Counter of total cases not erased
val.extend(duplicated)
### I would like to print the whole set of rows ordered by the 3rd col
for element in val:
print element
print "counter of cases: " , counter
コーディングを改善するためのヘルプと提案は大歓迎です。