Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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_Regex - Fatal编程技术网

使用Python在模式之间刮取数据

使用Python在模式之间刮取数据,python,regex,Python,Regex,我有一个数据集,我想获取数据的某些方面。对于第一行和第一个单词,如果它等于regex=re.compile(r'\A([A-Z][A-Z][A-Z]\w*[-]\w*')。我如何在两行(即破折号)之间刮取该数据,并将该数据与该行一起保留,并删除该标识符不等于“regex”的数据 例如:我想将数据保存在AbD000000-10和DeD000000-10范围内,但不想88888-10 ----------------------------------------------------------

我有一个数据集,我想获取数据的某些方面。对于第一行和第一个单词,如果它等于
regex=re.compile(r'\A([A-Z][A-Z][A-Z]\w*[-]\w*')
。我如何在两行(即破折号)之间刮取该数据,并将该数据与该行一起保留,并删除该标识符不等于“regex”的数据

例如:我想将数据保存在
AbD000000-10
DeD000000-10
范围内,但不想
88888-10

-------------------------------------------------------------------------------

AbD000000-10
Issue 1  
Issue 2          Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

-------------------------------------------------------------------------------
888888-10
         Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

-------------------------------------------------------------------------------
DeD000000-10
Issue 1  
Issue 2          Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

-------------------------------------------------------------------------------
我希望我的输出看起来像:

-------------------------------------------------------------------------------

AbD000000-10
Issue 1  
Issue 2          Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

-------------------------------------------------------------------------------
DeD000000-10
Issue 1  
Issue 2          Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

-------------------------------------------------------------------------------
在python中如何实现这一点

我能够获取里面的所有信息,但是有没有一种方法可以创建数据段,然后我就可以使用它了


谢谢!

我想你的正则表达式坏了(那
\A
不属于你)

在这种方法中,我假设分隔符总是相同的。我假设您不想进一步分解块。这只会捕获您想要的块。您可以方便地格式化它们(包括在打印块时打印分隔符)


实际上,如果你能帮上忙的话,最好从更好的来源使用这些数据。如果这是一个日志文件,你可能无法对其进行很多控制。但如果可以,看看你是否能获得一个更干净的数据源(可能是csv?)。

我认为你的正则表达式坏了(那不属于
\a

在这种方法中,我假设分隔符总是相同的。我假设您不想进一步分解块。这只会捕获您想要的块。您可以方便地格式化它们(包括在打印块时打印分隔符)



实际上,如果你能帮助它,最好从更好的来源使用这些数据。如果这是一个日志文件,你可能无法对其进行很多控制。但如果可以,看看是否可以获得更干净的数据源(可能是csv?).

AbD000000-10和DeD000000-10记录是否始终由两个物理行组成?888888-10记录是否始终由一个物理行组成?是否有任何不同类型的记录?标识符之间没有一致性,只有我要获取的标识符遵循:大写-小写-大写-大写-第一个的模式虚线后的第一行中有“word”。为了处理这些数据段,您能否向我们展示您在获取这些数据时看到的内容,包括可能填充到当前输出中的任何标记?当然。现在我只获取regex中的数据标识符:所以它只显示在prettytable=[Key,Error,ID]([AbD000000-10,DeD000000-10])之后,错误和ID列表为空,因为它抓取了6个问题,而不是4个问题,因为我没有限制只选择数据直到下一个虚线。如果这有意义。AbD000000-10和DeD000000-10记录是否总是由两条物理线组成?8888888-10记录是否总是由一条物理线组成有不同类型的记录吗?标识符之间没有一致性,只是我要获取的标识符遵循:大写-小写-大写-第一个“单词”的模式“在虚线后的第一行中。为了处理这些段,您能告诉我们您在获取这些数据时看到了什么,包括可能填充到当前输出中的任何标记吗?当然。现在我只获取数据,即正则表达式中的标识符:所以它只显示在prettytable=[Key,Error,ID]([AbD000000-10,DeD000000-10]),错误和ID列表为空,因为它抓取的是6个问题,而不是4个问题,因为我没有限制只选择数据直到下一个虚线。如果有意义,它只能是一个文本文件。下面是一个更好的数据示例:在我的例子中,我有data=open(“data.txt”,“r”)因此,我得到的错误文件对象没有属性拆分。有没有办法得到与文件相同的结果?谢谢!即使我使用input_text,我得到:AttributeError:“str”对象没有属性“拆分”现在它说AttributeError:builtin_function_或_method对象没有属性“拆分”很难调试,不知道是什么,具体来说,你正在做。你能用你的修订更新OP吗?它只能是一个文本文件。这里有一个更好的数据示例:在我的例子中,我有data=open(“data.txt”,“r”)因此,我得到的错误文件对象没有属性拆分。有没有办法得到与文件相同的结果?谢谢!即使我使用input_text,我得到:AttributeError:“str”对象没有属性“拆分”现在它说AttributeError:builtin_function_或_method对象没有属性“拆分”很难调试,不知道是什么,具体来说,你正在做。你能用你的修订更新OP吗?
import re

r = re.compile(r'([A-Z][a-z][A-Z]\w*[-]\w*')
sep = "#-------------------------------------------------------------------------------#"
input_text = """
#------------------------------------------------------------------------------#

AbD000000-10
Issue 1  
Issue 2          Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

#------------------------------------------------------------------------------#
888888-10
         Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

#------------------------------------------------------------------------------#
DeD000000-10
Issue 1  
Issue 2          Q             Q            Q 
ID: 2             MsEhdiehsla2 MsEhasdhsla2  hiGndiehsla2
ID: 3 

#------------------------------------------------------------------------------#
"""
s = input_text.split(sep)
keep = [x for x in s if re.search(r , x)]

for v in keep:
    print(v)