我有一个数据集,我想抓住数据的某些方面。对于第一行和第一个单词,如果它等于regex = re.compile(r'\A([A-Z][a-z][A-Z]\w*[-]\w*')
。我如何在行(破折号)之间刮取数据并将数据保留在行中并删除不等于“正则表达式”的标识符的数据。
例如:我希望将数据保留在AbD000000-10
和DeD000000-10
内,而不是888888-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中执行此操作?
我能够获取内部的所有信息,但有没有办法创建我可以玩的数据段。
谢谢!
答案 0 :(得分:0)
我认为你的正则表达式已被破坏(\A
并不属于)。
在这种方法中,我假设分隔符将始终相同。我假设你不想进一步打破这些障碍。这只抓取你想要的块。您可以格式化它们但是很方便(包括在打印块时将分隔符打印出来)。
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)
但是,真的,如果你可以提供帮助,最好从更好的来源消费这些数据。如果这是一个日志文件,您可能无法对其进行大量控制。但是,如果可以,看看你是否可以获得更清晰的数据来源(可能是csv?)。