2014-12-03 3 views
1

Имейте текстовый файл, который должен быть прочитан, тогда мне нужно взять имена под «Регион» и поместить их в список, который у меня есть, так как с моим кодом это только берет одно слово из «Регион» вместо полного имени региона из-за моего раскола, но я не могу найти способ его понять.Прочтите текстовый файл и укажите имена областей в Python

Пример текстового файла: первые 2 записи. Я хочу добавить «GULF OF CALIFORNIA» и «OFF THE EAST COAST OF HONSHU» как один элемент в список, но мой код добавляет только «CALIFORNIA» или «JAPAN» в список.

 
     MAG  UTC DATE-TIME   LAT  LON  DEPTH Region 

    MAP 4.3 2014/03/12 20:16:59  25.423  -109.730 10.0  GULF OF CALIFORNIA 
    MAP 5.2 2014/03/12 20:09:55  36.747  144.050 24.2  OFF THE EAST COAST OF HONSHU, JAPAN 
def main(): #defining main function 
    magList = [] #magnitude list of all together 
    regionList = [] #creating list to hold region names 
    newRegionList = [] 
    with open("earthquakes.txt", "r") as eqList: #opens earthquake text file and gets the magnitudes 
     eqList.readline() 
     for line in eqList: 
      line = line.split() 
      magList.append(float(line[1])) #appends magnitude as float values in list 

    with open("earthquakes.txt", "r") as eqList2: 
      eqList2.readline() 
      for line in eqList2: 
       line = line.split() 
       regionList.append(line[-1]) 
    newRegionList = list(set(regionList)) 

    greatMag = [] #creating lists for different category magnitudes 
    majorMag = [] 
    strongMag = [] 
    moderateMag = [] 

    for x in magList: #conditions for seperating magnitude 
     if x >= 8: 
      greatMag.append(x) 
     elif 7 <= x <= 7.9: 
      majorMag.append(x) 
     elif 6 <= x <= 6.9: 
      strongMag.append(x) 
     elif 5 <= x <= 5.9: 
      moderateMag.append(x) 

    print(greatMag) 
    print() 
    print(majorMag) 
    print()  
    print(strongMag) 
    print() 
    print(moderateMag) 
    print() 
    print(regionList) 


if __name__ == "__main__": #runs main function 
    main() 

После запуска моего кода он добавляет «Калифорния» и «JAPAN» в список, но мне нужно полное название региона, а не только последнее слово в регионе.

ответ

0
line = line.split() 
line = line[0:7] + [" ".join(line[7:])] 

Простым методом является объединение всех элементов в конце списка.

Вы также можете сделать это, ограничив количество возвращенных расколов. Так как вы разделив на нескольких пробелов, вы должны использовать регулярное выражение сплиттер вместо строки разветвителя:

import re 
re.split('\s+', line, 8) 
+0

Благодаря вычислял его не нужно импортировать модуль, я просто только скорректировал присоединиться к линии и получил мне нужен результат – Lompang

Смежные вопросы