2016-05-22 17 views
-3

私はPythonでとても新しいです。私は.txtファイルを持っていますが、これはフォーマットされた.csvファイルに変換したいと言いましたが、達成できなかったのです。手はそれに便利です。私はスクリーンショットで説明します。データをテキストファイルに書き込んでCSVに変換する

私はbip.txtという名前のtxtファイルを持っています。

read_files = glob.glob("C:/Users/Emrehana1/Desktop/bip.txt") 

with open("C:/Users/Emrehana1/Desktop/Test_Result_Report.csv", "w") as outfile: 
    for f in read_files: 
     with open(f, "r") as infile: 
      outfile.write(infile.read()) 
:それの内部のデータは、私がこれだけのコードで、テキストファイルからのすべてのデータを書き込んでいる何ができるかこれまで this csv file

、のようにCSVファイルに変換したいlike this

です

これは私が望む形式でCSVファイルに変換するソリューションですか?私はそれをはっきりと説明してくれることを望みます

+1

これらのスクリーンショットをご質問のテキストの例に変換してください。 – tdelaney

+1

Python ** csv **ライブラリを使用する必要があります(https://docs.python.org/2/library/csv.htmlを参照)。 (Python 2版)、またはPython 3の場合はhttps://docs.python.org/3/library/csv.html – paisanco

+0

なぜ、複数の入力ファイルを 'for f in read_files:'で処理しようとしていますか?ループが1つしかないことを考えれば?それ以上のものがあったとしても、最後の出力だけが 'Test_Result_Report.csv'出力ファイルになります。あなたが問題を解決するために多くの思考や努力をしているとは思われません。あなたには[[Stackoverflowのユーザーにはどのような研究努力が期待されていますか?_](http://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-ユーザー) – martineau

答えて

1

ファイルが1つしかなく、その名前が分かっている場合は、globモジュールを使用する必要はありません。あなたはそれを開くことができます。あなたのデータをコピーして貼り付けることはできません。イメージとしてテキストとして引用すると便利です。

入力ファイルの各エントリに対して、出力ファイルにエントリを作成するために必要な情報をまとめて複数の行を読み込む必要があります。あなたは「テスト:」で始まるものを見つけるまで、

一つの方法は、入力のラインをループにある、エントリを作成するために、next()を使用してファイルに次の行を取得する:

次のコードが生成されますあなたが必要とする分割 - csvファイルの作成は標準ライブラリモジュールで行うことができ、練習として残します。私はあなたが見ることができるように、別のファイル名を使用しました。

with open("/tmp/blip.txt") as f: 
    for line in f: 
     if line.startswith("test:"): 
      test_name = line.strip().split(None, 1)[1] 
      result = next(f) 
      if not result.startswith("outcome:"): 
       raise ValueError("Test name not followed by outcome for test "+test_name) 
      outcome = result.strip().split(None, 1)[1] 
      print test_name, outcome 
+0

に従うことに注意を払います。これは私のためにうまくいきました。私は助けに感謝します。 – Emrehan

+0

素晴らしい!幸運にも、スタックオーバーフローへようこそ – holdenweb

0

glob関数を使用してファイルを開くと、パターンに一致するファイル名が検索されます。 bip.txtファイルを開き、各行を読み込み、値を配列に入れてから、すべての値が新しい行とコンマで結合され、csvファイルに書き込むことができます。

# set the csv column headers 
values = [["test", "outcome"]] 

current_row = [] 
with open("bip.txt", "r") as f: 
    for line in f: 
     # when a blank line is found, append the row 
     if line == "\n" and current_row != []: 
      values.append(current_row) 
      current_row = [] 

     if ":" in line: 
      # get the value after the semicolon 
      value = line[line.index(":")+1:].strip() 
      current_row.append(value) 
    # append the final row to the list 
    values.append(current_row) 


# join the columns with a comma and the rows with a new line 
csv_result = "" 
for row in values: 
    csv_result += ",".join(row) + "\n" 

# output the csv data to a file 
with open("Test_Result_Report.csv", "w") as f: 
    f.write(csv_result) 
関連する問題