私はチャットのトランスクリプトを含む大きなtxtファイルを持っていますが、私の目標は異なるコンポーネントを抽出してそこに格納するパンダDfを作成することです。チャットのサンプルは以下の通りです:txtファイルから情報のブロックを抽出し、パンダのデータフレームとストアを作成
***************************************************** Session:123456 Chat Date: 2017-05-01T08:01:45+00:00 Chat exec name: Sam Member name: Sara 2017-05-01T08:01:45+00:00 Sara: I need help on element A 2017-05-01T08:01:47+00:00 Sam: Sure I can help you on this one 2017-05-01T08:01:48+00:00 Sara: Is there a better product 2017-05-01T08:01:48+10:00 Sam: Sure we have a lot of new products 2017-05-01T08:01:49+18:00 Sara: Can you let me know 2017-05-01T08:01:51+20:00 Sam: Here is the solution 2017-05-01T08:01:52+00:00 Sara: Thanks for this 2017-05-01T08:01:52+11:00 Sam: Have a Nive day Bye!! ***************************************************** Session:234567 Chat Date: 2017-05-02T18:00:30+00:00 Chat exec name: PAUL Member name:CHRIS 2017-05-02T18:00:30+00:00 CHRIS: I need help on element A 2017-05-02T18:02:30+00:00 PAUL: Sure I can help you on this one 2017-05-02T18:02:39+00:00 CHRIS: Is there a better product 2017-05-02T18:04:01+00:00 PAUL: Sure we have a lot of new products 2017-05-02T18:04:30+00:00 CHRIS: Can you let me know 2017-05-02T18:08:11+00:00 PAUL: Here is the solution 2017-05-02T18:08:59+00:00 CHRIS: Thanks for this 2017-05-02T18:09:11+00:00 PAUL: Have a Nice day Bye!! *****************************************************
私は列を持つテーブルを作成することができていた場合:
セッション、ChatDate、ChatExecName、MEMBERNAME、時間、人、文
最初の4つの列はチャットの完全なブロックを繰り返す必要があります。区切り文字は固定されており、変更されることはありません。
私はこれを試しましたが、これはすべてのブロックを一緒に返すので誰か助けてください。
import re
def GetTheSentences(infile):
Delim1 = '*****************************************************'
Delim2 = '*****************************************************'
with open(infile) as fp:
for result in re.findall('Delim1(.*?)Delim2', fp.read(), re.S):
print (result)
と
import re
def GetTheSentences2(file):
start_rx =re.compile('*****************************************************')
end_rx = re.compile('*****************************************************')
start = False
output = []
with open(file, encoding="latin-1") as datafile:
for line in datafile.readlines():
if re.match(start_rx, line):
start = True
elif re.match(end_rx, line):
start = False
if start:
output.append(line)
print (output)
これだけではregexでないパーサーの仕事のように見えます。 – MotKohn
サンプルコード/ソリューションを通じて私を導くことができます –
本当にありません。この主題に関する私の知識は時代遅れです。私はバイソンを使用していました。ちょうどgoogle 'パーサー'とあなたのために働くアプローチを選択してください。 – MotKohn