ACME PACKET SBC からの CDR レコードを解析しようとしています。大部分のデータは CSV です。私が遭遇している問題は、私が遭遇しているいくつかの奇妙なケースがあり、すべての CDR ではなく、一部の CDR だけであるということです。私は当初、このようなCSVリーダーでこれをやろうとし始めました。
情報が編集された CDR
...stop,"{phone_number} sip:{phone_number}@{ip_address}", ""{first_name},{last_name}"sip:{phone_number}@{ip_address}", "NAS-Identifier"...
この分野には他に 300 の列がありますが、これは私が不足している例の 1 つです。
コードのスニペット
import csv
import io
import gzip
col_names = ['Record-Type', 'Calling-Station-ID', 'Called-Station-ID', 'NAS-Identifier']
with gzip.open(filename, 'r') as f:
reader.csv.DictReader(io.TextIOWrapper(f, newline='\n'), fielnames=COL_NAMES, skipinitialspace=True)
try:
for row in reader:
print('record-type: ' + row['Record-Type'])
print('calling-station-id: ' + row['Calling-Station-ID'])
print('called-station-id: ' + row['Called-Station-ID'])
print('NAS-Identifier: ' + row['NAS-Identifier])
except csv.Error as e:
print(e)
次のコードで、次のいくつかを取得しています
record-type: Stop
called-station-id: {phone_number} sip:{phone_number}@{ip_address}
calling-station-id: {first_name}
NAS-Identifier: {last_name} sip:{phone_number}@{ip_address}
これもパンダで読み込もうとしましたが、引用符の横にあるコンマが原因で分割されているのとほぼ同じ結果が得られました。
さらに、 " が quotechar 内にあると、そこでも問題が発生していると思います。
これは、ほとんどのレコードの変数であり、これが正常に機能します。この問題があるのは数百だけですが、ヒットする前にレコードがどのようにフォーマットされているかがわからないため、これらを解析することはできません違う。
すべての助けに感謝します。
ありがとう