Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 难以选择特定行并与特定列合并_Python_Python 2.7 - Fatal编程技术网

Python 难以选择特定行并与特定列合并

Python 难以选择特定行并与特定列合并,python,python-2.7,Python,Python 2.7,我有一个文本文件,我有这样的数据 文本文件1 ?Cricket|Batsman|EK Batsman play cricket for batting ?Cricket|Football|E9 Sequence unavailable ?Cricket|Hockey|EN Sequence unavailable 我只想复制序列不可用的数据以及最后一列EN 所需输出 Sequence unavailable|E9 Sequence unavailable|EN 我不知道如何只选择序列不可用的

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

文本文件1

?Cricket|Batsman|EK
Batsman play cricket for batting
?Cricket|Football|E9
Sequence unavailable
?Cricket|Hockey|EN
Sequence unavailable
我只想复制
序列不可用的数据
以及最后一列
EN

所需输出

Sequence unavailable|E9
Sequence unavailable|EN
我不知道如何只选择
序列不可用的特定数据,我标记了最后一列,但很难只选择带有问题编号的
序列不可用
,如何:

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

用“|”分隔符将第二、第四、第六排加入第一排对您来说是多么困难。 如果不是那么难,那么我有一个快速而肮脏的解决方案

修改后的数据看起来像

比赛|球员|局数|结果

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

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

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

代码看起来像

import pandas as pd

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

c = a[a["Result"] != "Sequence unavailable"]

您是否只需要“序列不可用”时的数据?那么也许这会帮助你:

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")

是否总是每两行写一次?请在你的问题中添加你尝试过的内容。