2016-08-20 43 views
0

我需要編寫一個python代碼,它將.txt文件中兩個空行之間的文本插入到Excel中的唯一列中,並只將這些文本粘貼一次。例如:如何根據空格將文本數據導入到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個小時內使用了Google,並且取得了很小的進展。

+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 

生成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)) 

你應該再有一個CSV,您可以在Excel中打開。

+0

非常感謝您的幫助!這段代碼正是我所需要的。 – DartmouthDude82

相關問題