Ich arbeite mit einer großen Anzahl von Dateien (~ 4 GB wert), die alle zwischen 1 und 100 Einträge mit dem folgenden Format enthalten (zwischen zwei *** ist ein Eintrag):Extrahieren von Informationen aus Textdatei über Regex und/oder 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:
***
Jetzt möchte ich irgendwie diese in Pandas für die Massenanalyse importieren, aber natürlich würde ich diese Pandas umgehen kann in ein Format konvertieren. Deshalb möchte ich ein Skript schreiben, das die oben in eine CSV konvertiert etwas wie folgt aussehen (Benutzer ist die Dateititel):
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
(Formatierung ist nicht perfekt, aber hoffentlich bekommen Sie die Idee)
Ich hatte einige Code arbeiten, die auf der Grundlage der es regelmäßig Informationen in Segmenten von 12 funktionierte, aber leider einige der Dateien enthalten einige Whitelines in einigen Bereichen. Was ich im Grunde zu tun suchen, ist:
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
jedoch strittig, dass einige Felder, die Worte in den Feldern [] .. enthalten kann ich für eine \ n char zunächst prüfen kann, was stark die Menge reduzieren würde von fehlerhaften Einträgen, aber würde sie nicht beseitigen.
Kann mir jemand in die richtige Richtung zeigen?
Vielen Dank im Voraus!
Woher kommt der Benutzer? – depperm
Oh mein Schlechter, Benutzer wird vom textfile Name extrahiert (alle Textdateien sind durch userID). – user3394131
Vielleicht einfach versuchen, durch "***" zu teilen und dann das Ergebnis durch Newline zu teilen? Dann verbinden Sie diese mit einer Zeichenfolge und drucken sie in eine Textdatei. – Eswemenasja