![](/img/trans.png)
[英]Python: Read text file and split file into list variables, with each variable having 4 lines each
[英]Python nested for loop to split a file into lines then each line into variables
我需要讀取一個包含多個數據行的文件,如下所示:
1 D 65.33383 BAZ 308.1043 Year 2001 Month 01 Day 01 Lat 6.90 Long 126.58 Mag 6.4 Origin Time 06:57:04.2
我需要將文件拆分為幾行,然后將每一行拆分為每個空間的變量。
到目前為止,我使用的嵌套循環看起來像:
for line in open("filename", 'r').readlines():
variable = string.split(line)
values = [variable]
for value in values
value = string.split(' ')
year, month = value[0], value [1]
我的問題是我不知道第二個for循環需要什么部分? 即...
我對使用python編程很陌生。
with open('data.txt', 'r') as data:
for _input in data:
line = _input.split(' ')
data = {'Index':line[0],
'Origin Time':line[-3:][-1].strip()
}
data.update(dict(zip(line[1:-3][0::2], line[1:-3][1::2])))
print data
我不能完全確定您到底要實現什么目標,尤其是您不清楚您的表達方式:“然后將每一行分成每個空格中的變量”。
但是,假設您需要獲得包含字典列表的輸出,每個字典都包含來自行的已解析數據,那么以下內容對您將很有用:
data = []
with open("file.txt") as f:
for line in f:
lineData = {}
lineSplit = line.split()
for i in range(1,len(lineSplit)-1,2):
lineData[lineSplit[i]] = lineSplit[i+1]
data.append(lineData)
print data
這將為您提供如下輸出:
[{'Origin': 'Time', 'D': '65.33383', 'BAZ': '308.1043', 'Long': '126.58', 'Month': '01', 'Mag': '6.4', 'Year': '2001', 'Lat': '6.90', 'Day': '01'}]
字典未排序,因此鍵和值以隨機順序出現。 注意,起源時間成為鍵和值,因為您想在空間上分割線,並且起源和時間之間有一個空格。 干杯!
在這種情況下,使用正則表達式可能是最簡單的,因為某些條目包含空格。
下面的表達式查找不是數字的任何內容,然后查找僅由數字,點和冒號組成的內容:
import re
key_val = re.compile(r'\s*([^\d]+)\s+([\d.:]+)\s*')
mapping = dict(key_val.findall(line))
這將產生一個字典對象:
>>> import re
>>> line = '1 D 65.33383 BAZ 308.1043 Year 2001 Month 01 Day 01 Lat 6.90 Long 126.58 Mag 6.4 Origin Time 06:57:04.2\n'
>>> key_val = re.compile(r'\s*([^\d]+)\s+([\d.:]+)\s*')
>>> key_val.findall(line)
[('D', '65.33383'), ('BAZ', '308.1043'), ('Year', '2001'), ('Month', '01'), ('Day', '01'), ('Lat', '6.90'), ('Long', '126.58'), ('Mag', '6.4'), ('Origin Time', '06:57:04.2')]
>>> dict(key_val.findall(line))
{'D': '65.33383', 'BAZ': '308.1043', 'Long': '126.58', 'Month': '01', 'Origin Time': '06:57:04.2', 'Mag': '6.4', 'Year': '2001', 'Lat': '6.90', 'Day': '01'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.