0

我有一个文本文件,我有这样的数据

文本文件1

?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带有问题编号的

4

3 回答 3

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
于 2013-07-10T14:13:28.643 回答
0

用“|”将第2、4、6行加入到第一行对你来说有多难 分隔符。如果它不是那么难,那么我有一个快速而肮脏的解决方案。

修改后的数据看起来像..

比赛|球员|局|结果

板球|击球手|EK|击球手为击球打板球

板球|足球|E9|序列不可用

板球|曲棍球|EN|序列不可用

代码看起来像......

import pandas as pd

a = pd.read_csv("test.txt",sep="|")

c = a[a["Result"] != "Sequence unavailable"]
于 2013-07-10T14:14:41.193 回答
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")
于 2013-07-10T14:15:01.633 回答