【发布时间】:2021-08-23 23:08:23
【问题描述】:
我有以下数据文件。
>| --- | | Adelaide | | --- | | 2021 | | --- | | Rnd | T | Opponent | Scoring | F | Scoring | A | R | M | W-D-L | Venue | Crowd |
> Date | | R1 | H | Geelong | 4.4 11.7 13.9 15.13 | 103 | 2.3 5.5 10.8
> 13.13 | 91 | W | 12 | 1-0-0 | Adelaide Oval | 26985 | Sat 20-Mar-2021 4:05 PM | | R2 | A | Sydney | 3.2 4.6 6.14 11.22 | 88 |
> 4.1 9.6 15.11 18.13 | 121 | L | -33 | 1-0-1 | S.C.G. | 23946 | Sat 27-Mar-2021 1:45 PM |
我创建了一个代码来将该数据操作为我想要的结果,即一个列表。当我在当前位置打印我的变量行时,它会正确打印。 但是,当我将列表行附加到另一个列表 my_array 时,我遇到了问题。我得到一个空列表返回。 我认为问题是我要附加的位置? 我的代码是这样的:
with open('adelaide.md', 'r') as f:
my_array = []
team = ''
year = ''
for line in f:
row=[]
line = line.strip()
fields = line.split('|')
num_fields = len(fields)
if len(fields) == 3:
val = fields[1].strip()
if val.isnumeric():
year = val
elif val != '---':
team = val
elif num_fields == 15:
row.append(team)
row.append(year)
for i in range(1, 14):
row.append(fields[i].strip())
print(row)
my_array.append(row)
【问题讨论】:
-
应该
my_array.append(row)在for循环内吗? -
您在每行的开头将行重置为一个空列表,然后将其重置。
-
我做了,但它不起作用给我一个不同的输出
-
你在这里犯了很多错误。例如,您仅在
num_fields为 3 时为year或team设置一个值(然后您只为它们设置一个,基于fields[1]),但您在num_fields为 15 时使用这些值.您提供的示例数据中的所有行都没有 3 或 15 个字段。我只能建议您重新开始,并逐步进行(例如,第一步,在阅读时循环打印每一行,然后拆分并打印每个字段等)。
标签: python data-science