2017-11-07 15 views
0

コンマで区切られた.csvファイルには、そのフィールド内にコンマが含まれています(テキスト、小数点など)。 データの形状は実際にはデータフレームなので、後でパンダを使用します。 このファイルをパンダで読み込む方法、またはタブ区切りの.txtファイルまたはJSONファイルに変換する方法フィールド内のカンマ付き.csvファイルをJSON/TXTに変換する

ファイルは3,5 MB大きく、約700行あります。以下は、ヘッダーと2行のデータの例です。ファイルには、空の行はありません。ここを読みやすくするためにここに示しました。 データがWebでスクラップされているため、2つの変数(responseおよびrequest url)を削除する必要がありました。

Tehnicne_podrobnosti、RESPONSE_DATE、RESPONSE_TIME

「Klikni ZApovečavoDodaj V primerjavo Dodatne slike:インテルペンティアムデュアルコアG4560 "BOX" Rednaのシナ:67,63€Spletnaのシナ:62,62€Prihranek :5,01€ガラPentium®Dual-CoreJedro:Kaby LakeFrekvencaプロセッサー:3500 MHzプロセッサー:ソケット1151技術情報:0.014μm評価:3072 kBFrekvenca FSB/HT:チップ・コア:デュアル・コア・プロセッサー:インテル・プロセッサー・インテルペンティアムG4560は、14ナノメートルのプロセスプロジェクトでKaby Lakeを使用しています。 Deluje na frekvenci 3,5 GHz。 3 MBのキャッシュ容量を表示します。 54W(TDP)のエネルギーを消費します。 LGA1151.Vgrajena ja nova generacijaインテル®グラフィックスIntel®グラフィックス610、350 MHz/1,15 GHz対応Podpira DirectX 12、OpenGL 4.4で動作する4096x2304 @ 60Hz preko DisplayPort(4096x2304 @ 24Hz preko HDMI 1.4) Podpira do 3 zaslone naenkrat.Dodatne lastnosti procesorjaPentium®デュアルコアG4560:* GPU Frekvenca:1050 MHz * Tip GPU:HD Graphics 610(ポッドポラDirectX 12)* TDP:54 W * Podpora DDR3L:1333/1600 MHz @ 1.35V * Podpora DDR4:2133/2400 MHz * MMX、AES-NI、CLMUL、FMA3、SSE、SSE2、SSE3、SSSE3、SSE4、SSE4.1、SSE4.2、AVX、 Intel Core™i5 7400 "BOX" Redna Cena(インテルCore™i5 7400 "BOX")は、Intel Core™i5 7400「BOX」、「Intel Core™i5 7400」、「Intel Core™i5 7400」、「Intel Core™i5 7400」、「Intel Pentium III」、 :213,06€眠り:197,29€プリムラク:15,77€ 3900 MHz EAN:5032037092982チップ・プロセッサー:Core™i5Jedro:Kaby LakeFrekvencaプロセッサー:3000 MHzプロセッサー・ソケット:ソケット1151技術情報:0.014μm評価:6144 kBFrekvenca FSB/HT:チップ・コア:クアッドコア・プロセッサー:Intel Core i5プロセッサー-7400は、14ナノメータースケールのプロダクトを処理するためにKaby Lakeを使用しています。 3,0 GHzのフリークエンシー、3,5 GHzのターボブーストテクノロジー。 6 MBキャッシュをプレビューします。 65W(TDP)のエネルギーを消費します。 LGA1151.Vgrajena ja nova generacijaインテル®インテグレーテッドグラフィックスインテル®HDグラフィックス630は、350 MHz/1,0 GHzで動作します。 Podpira DirectX 12、OpenGL 4.4で動作する4096x2304 @ 60Hz preko DisplayPort(4096x2304 @ 24Hz preko HDMI 1.4) Podpira do 3 zaslone nenkrat.Ponuja do 16 PCI express linij。ここで、プロセッサ上で適切に低温負荷は、プロセッサの周波数を上昇させるターボブースト2.0、の関数です。加速度はjeder.Dodatneはプロセッサーインテル®Core™i5の7400を備えobremenenjenih数によって異なります。*スレッド数(スレッド):4 * GPU周波数:1000 MHzのGPU *型:HDグラフィックス630 *(のDirectX 12をサポートしている)ターボ周波数:3 5 GHzの* TDP:65 W *サポートDDR3L:1600分の1333 MHzの@の1.35V *サポートDDR4:2400分の2133 MHzの*命令:MMX、AES-NI CLMUL、FMA3、SSE、SSE2、SSE3、SSSE3、SSE4、 SSE4.1、SSE4.2、AVX、AVX2、TXT、TSX、SGX、VT-xの、VT-dの "" 2017年5月26日 "" 10時01分58秒「

のための任意の提案橋の効率的なソリューション?

+0

でテスト。あなたが何かに取得したい場合は、より良いあなたの質問には明確ではないにします。 –

+0

それはあなたが例のCSVファイルからの最初の数行を含めるように質問を編集した場合に役立ちwouldntは。 –

+0

私はそれを編集しました。私はこれが優れている願っています。 –

答えて

1

問題が正しく、二重引用符で囲まれていない"BOX"ように見えます。回避策の一つは、それは、二重引用されるためにということと、その後作成するために、PythonのCSVに渡しwouldntの行する場合。これらは、その後、データフレームにロードするために使用することができます。

import csv 
from StringIO import StringIO 
import pandas as pd 

data = [] 

with open('input.csv', 'r') as f_input: 
    for line_number, raw_row in enumerate(f_input, start=1): 
     cols = raw_row.rsplit(',', 4) 
     cols[0] = '"{}"'.format(cols[0].strip('"').replace('"', '""')) 
     row = next(csv.reader(StringIO(','.join(cols)))) 
     data.append(row) 

df = pd.DataFrame(data[1:], columns=data[0]) 
df['DATE_TIME'] = pd.to_datetime(df.RESPONSE_DATE + " " + df.RESPONSE_TIME, format="%m.%d.%Y %H:%M:%S") 
df.drop(['RESPONSE_DATE', 'RESPONSE_TIME'], axis=1, inplace=True) 

print df 

は、これが唯一の最初の列は、二重引用の問題を持っていると仮定して動作します。それは、二回、右生の行を分割し、最初の列から外側の二重引用符を削除し、""ですべて"を置き換えます。これは、元の生の行を再構成し、行を作成するために、CSVファイルに渡します。

あなたを与える:

       Tehnicne_podrobnosti RESPONSE_CODE  URL   DATE_TIME 
0 Klikni za povečavo Dodaj v primerjavo Dodatne ...   405 http:// 2017-05-26 10:01:50 
1 Klikni za povečavo Dodaj v primerjavo Dodatne ...   404 http:// 2017-05-26 10:01:58 

RESPONSE_DATE。またRESPONSE_TIME列を合わせ、datetimeオブジェクトに変換されています。

4、すなわち4つの通常の列との問題を有するものがある前提このテストで私は、応答コードとURLを持っている余分な2つの列をシミュレートしています。 - > `` file.txt` file.csv`: は、ファイルの名前を変更したPython 2.xの

+0

コードは動作しますが、問題は、私は** **複数の異なる単語を持っていること、である正しく二重引用符で囲まれたされていないこと。 私は多分これが実際に役立つwouldntのことを考えた: - 変数「Tehnicne_podrobnostiを」** **常に 「をクリックしてください」で始まる - 次の変数は、「Request_url」です**いつものhttp「で始まる:// .. 。「私はそれを解決する方法のアイデアを得ることができません..but 。 –

+0

私はうまくいけば、今どれ非二重引用符で囲まれた単語のために働く必要があります。 –

+0

私は働きます!ありがとうございました。 –

関連する問題