2017-12-11 14 views
1

私はウェブサイトを作って、誰かがフォームを送信すると(例えば自分の仕事について問い合わせると)メールを受け取るので、私は自動化しようとしています関連する電子メールをダウンロードして無関係なデータを削除することはできませんが、.txtファイルをインポートしてスプレッドシート(​​.csvファイル)にエクスポートする方法についていません。これはデータを抽出しようとしている.txtファイルです: pythonでテキストファイルを読み込んで変数を出力する方法

Name: 
someone 

Email: 
[email protected] 

Site: someone.com 

Remote IP: 192.168.0.1 

----------------------------------------------------------------------- 

Name: 
someone51 

Email: 
[email protected] 


Site: someone1.com 

Remote IP: 192.168.0.2 

----------------------------------------------------------------------- 
Name: 
someone 

Email: 
[email protected] 

Site: someone.com 

Remote IP: 192.168.0.5 

----------------------------------------------------------------------- 

Name: 
someone51 

Email: 
[email protected] 


Site: someone1.com 

Remote IP: 192.168.0.76 

----------------------------------------------------------------------- 
Name: 
someone123 

Email: 
[email protected] 

Site: someone.com 

Remote IP: 192.168.0.21 

----------------------------------------------------------------------- 

Name: 
someone51 

Email: 
[email protected] 


Site: someone1.com 

Remote IP: 192.168.0.2 

----------------------------------------------------------------------- 

`

`

は明らかに、私は正確なデータを変更しなければならなかったが、これは、私はあまりにもそれを持っているレイアウトです。

だから、私はこの.txtファイルを変更し、

は我々だけで、ファイルのセクションを取る場合は、それが働くようになります事前

+0

あなたが持っている質問は何ですか? –

+0

私はこの質問を更新しましたので、この.txtファイルをどのように変更してスプレッドシートに体系的に入れていいですか – Tufayl

答えて

1

にありがとうスプレッドシートに体系的にそれを置くことができる方法について尋ねています

f = """Name: someone  
Email: [email protected]  
Site: someone.com  
Remote IP: 192.168.0.1""" 

ファイルをPythonに開く方法を知っていると仮定すると、上記のような複数行の文字列を持つ必要があります。私たちが安全にコロン(:)は各行に2つの列を分割することを言うことができれば今

は、その後、私たちがしなければならないすべてはカンマと出力とファイルにこの新しい文字列replaceそれらのすべてをあります。そのような単純な。これを行うには

、私たちはただ一度にそれらすべてを交換するstr.replaceメソッドを使用することができ、文字列を反復処理する必要はありません。

f = f.replace(":", ",") 

、その後fCSV形式に変更されます:

Name, someone  
Email, [email protected]  
Site, someone.com  
Remote IP, 192.168.0.1 

今、行うために残されていることすべてが.csvで終わるファイルにこのデータを書き込みます:

with open("output.csv", "w") as of: 
    of.write(f) 

それだけです! CSVビューアでoutput.csvを開くことができます。ファイルを読む必要があります。ここで


LibreOfficeで開いた後、それは私のためにどのように見えるかのスクリーンショットです:

table

ので、働いているようです!


更新

ので、動作するように上記のソリューションを解決する2問題があります。

  • ファイルを読み取る方法
  • に重複する行を連結する方法
  • は、次の行

ファイルを(変数に:f)読み込むには、多くの、多くのチュートリアルがありますので、私は深く掘り下げません。しかし、本質的に、ちょうど行います

f = open("input.txt").read() 

をその後、我々は今fを扱っているかのように、おそらくのようなもの:

Name: 
someone 

Email: 
[email protected] 

Site: someone.com 

Remote IP: 192.168.0.1 

はその後、我々はちょうど:にして:\nの出現を交換する必要がありますあふれた行を削除します。 \n\nをちょうど\nに置き換えて、二重線を削除する必要もあります。

これら2操作は1行で行うことができます答えの開始時に概説されているよう

f = f.replace(":\n", ":").replace("\n\n", "\n") 

その後、私たちはCSVファイルにデータを書き込むために同じ手順を使用することができます。この段階で、あなたはコードを少し単純化するとre.subを使用してに見てみたいことが


注意!

+0

しかし、いくつかの名前はファイル名に<他の行> jamesとどのように抽出しますか?ファイルからの行の文字列 – Tufayl

+0

@Tufaylこれらの点に対処するための答えを更新しました –

+0

正しい方向に変数をインポートすることができます。ありがとう非常に高く評価しました – Tufayl

関連する問題