私は大量のファイル(〜4GB相当)を扱っています。これらのファイルには、次の形式の1〜100個のエントリが含まれています):regexやpythonでテキストファイルから情報を抽出する
***
Type:status
Origin: @z_rose yes
Text: yes
URL:
ID: 95482459084427264
Time: Mon Jul 25 08:16:06 CDT 2011
RetCount: 0
Favorite: false
MentionedEntities: 20776334
Hashtags:
***
***
Type:status
Origin: @aaronesilvers text
Text: text
URL:
ID: 95481610861953024
Time: Mon Jul 25 08:12:44 CDT 2011
RetCount: 0
Favorite: false
MentionedEntities: 2226621
Hashtags:
***
***
Type:status
Origin: @z_rose text
Text: text and stuff
URL:
ID: 95480980026040320
Time: Mon Jul 25 08:10:14 CDT 2011
RetCount: 0
Favorite: false
MentionedEntities: 20776334
Hashtags:
***
は今、私は何とか質量分析のためのパンダにこれらをインポートしたいが、明らかに私はパンダが処理できる形式にこれを変換する必要があると思います。
User Type Origin Text URL ID Time RetCount Favorite MentionedEntities Hashtags
4012987 status @z_rose yes yes Null 95482459084427264 Mon Jul 25 08:16:06 CDT 2011 0 false 20776334 Null
4012987 status @aaronsilvers text text Null 95481610861953024 Mon Jul 25 08:12:44 CDT 2011 0 false 2226621 Null
(フォーマットは完璧ではないですが、うまくいけば、あなたのアイデアを得る)
:だから私は、この(ユーザーがファイルのタイトルである)のようなものを探して.CSVに上記の変換スクリプトを書きたいです私はいくつかのコードを定期的に12のセグメントで情報を基にして作業していますが、悲しいことに、いくつかのフィールドにいくつかのホワイトラインが含まれています。私は基本的に行うために探していますは、次のとおりです。
fields[] =['User', 'Type', 'Origin', 'Text', 'URL', 'ID', 'Time', 'RetCount', 'Favorite', 'MentionedEntities', 'Hashtags']
starPair = 0;
User = filename;
read(file)
#Determine if the current entry has ended
if(stringRead=="***"){
if(starPair == 0)
starPair++;
if(starPair == 1){
row=row++;
starPair = 0;
}
}
#if string read matches column field
if(stringRead == fields[])
while(strRead != fields[]) #until next field has been found
#extract all characters into correct column field
しかし問題は、[] ..私は最初の\ n個の文字を確認することができますいくつかのフィールドが大幅に量を減らすことになる、フィールド内の単語を含めることができるという問題が生じます障害のあるエントリは削除されません。
誰でも正しい方向に向けることができますか?
ありがとうございます!
ユーザーはどこから来たのですか? – depperm
Oh my bad、ユーザーはテキストファイル名から抽出されます(すべてのテキストファイルはuserIDに基づいています)。 – user3394131
"***"で分割して改行で分割してみてください。それらを1つの文字列に結合し、それをテキストファイルに出力するよりも。 – Eswemenasja