2016-08-20 6 views
0

.txtファイルの2つの空白行の間にテキストを入れ、そのテキストをExcelの一意の列に挿入し、ヘッダーを1回だけ貼り付けるPythonコードを記述する必要があります。たとえば:テキストデータをスペースに基づいてExcelにインポートするには?

d1_type: 
shape: 
2, 

order: 
false, 

relation: 
true, 

d2_type: 
shape: 
false, 

order: 
false, 

relation: 
true, 

encoding_rt: 
6641, 

verification_rt: 
2429, 

target: 
2," 

ので、テキストの各クラスタは、Excelで独自の列にする必要があります(はまた、このページは間違って私のテキストの書式設定された - 各コロンの後の言葉は、自分のラインにする必要があります) 。メインの見出し(例:順序、関係など)は、理想的には、各列に名前を付けるために一度だけ貼り付けられます。私はこれをどうやって行うのか本当に迷っています。私は過去3時間にそれをgoogledしてほとんど進歩を起こさなかった。あなたはできる

+0

一部のクラスタには行があります。どのようにそれらを解析するのですか?列ヘッダー、セル値、および? –

答えて

0

  1. 解析は、各チャンク
  2. は、
  3. 最後に辞書に各チャンクを変換辞書のリストを使用してCSVを生成します。

ExcelでCSVを開くことができます。次のようなもの

パーズチャンク

ファイル名を指定すると、チャンクが生成されます。

def parse_chunks(filename): 
    chunks = [] 
    with open(filename) as f: 
     chunk = [] 
     for line in f: 
     if line.strip().endswith('_type'): 
      if chunk: 
       chunks.append(chunk) 
      chunk = [line] 
     chunk.append(line) 
    return chunks 

辞書 - IFY

考えるとチャンク、辞書のリストを生成します。

def dictionarify(chunks): 
    data = [] 
    for chunk in chunks: 
     datum = {} 
     key = None 
     for line in chunk.splitlines(): 
      if line.endswith(':'): 
       key = line.strip()[:-1] 
      elif line.endswith(','): 
       datum[key] = line.strip()[:-1] 
      # implicitly ignores blank lines 
     data.append(datum) 
    return data 

あなたは、あなたがExcelで開くことができるCSVを持っている必要がありCSV

def generate_csv(data, dest): 
    with open(dest, 'w') as f: 

     headers = set() 
     for datum in data: 
      for key in datum: 
       headers.add(key) 
     headers = list(headers) # arbitrarily establish order somehow 
     f.write(','.join(headers)) 

     for datum in data: 
      f.write(','.join(datum[key] for key in headers)) 

を生成します。

+0

本当にありがとうございました!このコードは私が必要としていたものです。 – DartmouthDude82

関連する問題