如何迭代 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()
将输出 ""
.
下面的数据集由句子组成,其中每个单词都被单独标记。我想把它分成两个变量来训练我的模型。记录由空行分隔,每条记录跨越多行,其中单词和标签以逗号分隔。
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()
将输出 ""
.