如何迭代 python 中的文件,其中记录是多行的,字段以逗号分隔,并且记录由空行分隔?

How to iterate on a file in python where records are multi-line with comma separated fields and the records are delimited by an empty line?

下面的数据集由句子组成,其中每个单词都被单独标记。我想把它分成两个变量来训练我的模型。记录由空行分隔,每条记录跨越多行,其中单词和标签以逗号分隔。

how,SW
is,SW
the,SW
weather,WTR
?,.
       # blank line
will,SW
it,SW
rain,RAIN
this,ADJ
weekend,TIME
?,.

我想处理这个输入文件以生成预期的输出,如下所示:

X 变量必须包含每条记录的所有单词作为单独的列表:

[[how, is, the, weather, ?], [will it rain this weekend, ?]]

Y 变量必须包含每个记录的标签作为单独的列表:

[[SW, SW, SW, WTR, .], [SW, SW, RAIN, ADJ, TIME, .]]

求推荐。谢谢!

可能像这样的东西会起作用:

Xs = []
Ys = []
with open('file.txt', 'r') as f:
    lines = f.readlines()
i = 0
X = []
Y = []
for line in lines:
    line = line.strip()
    if line == "":
        Xs.append(X)
        Ys.append(Y)
        X,Y = [],[]
    else:
        x,y = line.split(",")
        X.append(x)
        Y.append(y)
Xs.append(X)
Ys.append(Y)
print(Xs)
print(Ys)

#[['how', 'is', 'the', 'weather', '?'], ['will', 'it', 'rain', 'this', 'weekend', '?']]
#[['SW', 'SW', 'SW', 'WTR', '.'], ['SW', 'SW', 'RAIN', 'ADJ', 'TIME', '.']]

代码基本上打开文件,读取所有行,遍历行以检查我们是否已完成导入记录(如空行所示)并采取相应行动。 line.strip() 删除行中的所有空格,因此 "\n".strip() 将输出 "".