2016-11-26 2 views
-2

Ich möchte eine TXT-Datei nehmen, die in folgendem Format ist:eine TXT-Datei in Pandas Formatierung

StateOne[edit] 

RegionOne (UniversityOne)[1] 

RegionTwo (UniversityTwo) 

RegionThree (UniversityThree)[2] 

werden und haben diese Daten gereinigt und in einem Datenrahmen dieses Format zurückgegeben:

State RegionName 
0 StateOne RegionOne 
1 StateOne RegionTwo 
2 StateOne RegionThree 

so zum Beispiel habe ich:

Alabama[edit] 

Auburn (Auburn University)[1] 

Florence (University of North Alabama) 

Jacksonville (Jacksonville State University)[2] 

und ich brauche diese in den Datenrahmen zu konvertieren:

State RegionName 
0 Alabama Auburn 
1 Alabama Florence 
2 Alabama Jacksonville 

Ich bin ein wenig verwirrt, wie die Zeichen wie "[" bis zum Ende zu entfernen und haben sie "State" benannt werden. Und für "RegionName", wenn Sie jedes Zeichen von entfernen, um bei Bedarf zu beenden. Ziemlich neu bei Pandas und verwirrt über einen schnellen einfachen Weg, dies zu tun.

+0

es in der Regel hilft Ihnen, Antworten zu bekommen, wenn Sie zumindest versucht haben, und zeigen Sie, dass – dartdog

+0

Vielen Dank für den Rat. Ich bin neu zu Stack-Überlauf, so dass ich hier die Regeln lerne. Ich versuchte eine 'str.split()' Methode aber es schien nicht die Ergebnisse zu bekommen, die ich wollte – kma

Antwort

0

Dies wird vorausgesetzt, dass der Zustand immer die "bearbeiten" mit [] und die Regionen () haben.

Der Trick ist, ein split in „[“ und „(“ (je nachdem) und bleibt mit dem ersten Teil der Zeichenfolge zu tun.

string = '''Alabama[edit] 

Auburn (Auburn University)[1] 

Florence (University of North Alabama) 

Jacksonville (Jacksonville State University)[2]''' 

i = 0 
print(' \t' + 'State' + '\t' + 'RegionName') 

for line in string.split('\n'):  # Split by the line breaks 
    if line == '':     # We skip the line if it is empty 
     continue 
    if 'edit' in line:    # We look for some "edit" and 
     state, spam = line.split('[') # store it in a variable 
     continue      # When we find other 
             # it will replace 
    region_name, spam = line.split(' (') 
    i += 1       # The same but with '(' 
    print(str(i) + '\t' + state + '\t' + region_name) 

Ich hoffe, es hilft!

+0

Vielen Dank für Ihre Hilfe Ich schätze es wirklich. – kma

Verwandte Themen