我有一个文本文件,我有这样的数据
Textfile1
?Cricket|Batsman|EK
Batsman play cricket for batting
?Cricket|Football|E9
Sequence unavailable
?Cricket|Hockey|EN
Sequence unavailable
我只想复制包含Sequence unavailable
的数据以及最后一栏EN
中提供的问题编号
必需的输出
Sequence unavailable|E9
Sequence unavailable|EN
我不知道如何仅选择Sequence unavailable
的具体数据,我会标记所有最后一栏,但难以选择Sequence unavailable
及其问题编号
答案 0 :(得分:0)
这个怎么样:
lastline = None
with open('test.txt', 'r') as f:
for line in f.readlines():
if not lastline:
lastline = line.rstrip('\n')
continue
if line.rstrip('\n') == 'Sequence unavailable':
_, _, id = lastline.split('|')
print 'Sequence unavailable|' + id
lastline = None
答案 1 :(得分:0)
使用“|”将第2,第4,6行连接到第一行有多困难sepeartor。 如果它不那么难,那么我有一个快速而肮脏的解决方案。
修改后的数据看起来像..
游戏|球员|埋立|结果
板球|击球手| EK |击球手打板球击球
板球|足球| E9 |序列不可用
板球|曲棍球| EN |序列不可用
代码看起来像......
import pandas as pd
a = pd.read_csv("test.txt",sep="|")
c = a[a["Result"] != "Sequence unavailable"]
答案 2 :(得分:0)
您是否只想要数据"序列不可用"?那么也许这会对你有所帮助:
with open("input.txt", "r") as f:
s = f.read()
output, lines = [], (line for line in s.split("\n"))
for line in lines:
if line.startswith("?"):
data = next(lines)
if data == "Sequence unavailable":
output.append("{data}|{qn}".format(data=data, qn=line.split("|")[-1]))
with open("output.txt", "w") as f:
for line in output:
f.write(line + "\n")