是否有通配符';%';在Python中与SQL中等效?
我的代码通过一个不断更新的日志文件运行。我想挑出不必要的行,让代码只担心3行。唯一的问题是,这3行以一个总是在变化的时间戳开始。以下是其中一行的示例:是否有通配符';%';在Python中与SQL中等效?,python,regex,Python,Regex,我的代码通过一个不断更新的日志文件运行。我想挑出不必要的行,让代码只担心3行。唯一的问题是,这3行以一个总是在变化的时间戳开始。以下是其中一行的示例: 2020-05-19 07:25:46.768:Verbose:InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=,Reader Connected=True,Reader Address=XX.XX.XX.XX:XXXX,Last Msg Time=5/18/2020 11:51:03 AM,R
2020-05-19 07:25:46.768:Verbose:InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=,Reader Connected=True,Reader Address=XX.XX.XX.XX:XXXX,Last Msg Time=5/18/2020 11:51:03 AM,Reader type=Source
我想忽略时间戳(2020-05-19 07:25:46.768:)和行尾(,Last Msg Time=5/18/2020 11:51:03 AM,ReaderType=Source),只担心行中间。是否有一种方法可以使用类似于SQL中“%”的内容将变量设置为仅等于行中间的值?如果您将每行作为字符串读取,请尝试以下操作:
value=row[row.index(“标记”):row.index(“,Last”)]
如果您将每一行作为字符串读取,请尝试以下操作:
value=row[row.index(“标记”):row.index(“,Last”)]
您可以使用正则表达式:
重新导入
text='2020-05-19 07:25:46.768:Verbose:InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=,Reader Connected=True,Reader Address=XX.XX.XX.XX:XXXX,Last Msg Time=5/18/2020 11:51:03 AM,Reader type=Source'
打印(重新匹配(r'\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2}\.\d{3}(.+)\d{1,2}\/\d{2}/\d{4},文本)。组(1))
您可以使用正则表达式:
重新导入
text='2020-05-19 07:25:46.768:Verbose:InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=,Reader Connected=True,Reader Address=XX.XX.XX.XX:XXXX,Last Msg Time=5/18/2020 11:51:03 AM,Reader type=Source'
打印(重新匹配(r'\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2}\.\d{3}(.+)\d{1,2}\/\d{2}/\d{4},文本)。组(1))
您可以使用正则表达式获取所需内容
import re
text = '2020-05-19 07:25:46.768:Verbose: InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=, Reader Connected=True, Reader Address=XX.XX.XX.XX:XXXX, Last Msg Time=5/18/2020 11:51:03 AM, ReaderType=Source'
result = re.match(r'[\d\-\W:]+(.+),\WL', text)
print(result.group(1))
有关re的更多信息,您可以从这里获得您可以使用正则表达式获取所需内容
import re
text = '2020-05-19 07:25:46.768:Verbose: InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=, Reader Connected=True, Reader Address=XX.XX.XX.XX:XXXX, Last Msg Time=5/18/2020 11:51:03 AM, ReaderType=Source'
result = re.match(r'[\d\-\W:]+(.+),\WL', text)
print(result.group(1))
有关re的更多信息,您可以从这里获得如果整个日志位于名为text的变量中,您可以使用以下代码:
import re
#assume complete log file is in the text variable
#add code to load log-file into variable "text" HERE
#added sample text
text = """2020-05-19 07:25:46.768:Verbose: InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=, Reader Connected=True, Reader Address=XX.XX.XX.XX:XXXX, Last Msg Time=5/18/2020 11:51:03 AM, ReaderType=Source"""
pattern = re.compile(r'\.\d{3}:([\w:\s=,\.]*)Last')
result = pattern.findall(text)
print(result)
此将匹配所有内容
在时间戳之后,如“2020-05-19 07:25:46.768:
之后是“Last Msg Time=5/18/2020 11:51:03 AM,ReaderType=Source”
并将结果放入名为result的列表中
我已经用您提供的示例日志测试了代码
您可以在此处测试任何正则表达式:
如果整个日志位于名为text的变量中,则可以使用以下代码:
import re
#assume complete log file is in the text variable
#add code to load log-file into variable "text" HERE
#added sample text
text = """2020-05-19 07:25:46.768:Verbose: InvegoRFIDReaderProcessor:5:CheckSource:Truck Tag=, Reader Connected=True, Reader Address=XX.XX.XX.XX:XXXX, Last Msg Time=5/18/2020 11:51:03 AM, ReaderType=Source"""
pattern = re.compile(r'\.\d{3}:([\w:\s=,\.]*)Last')
result = pattern.findall(text)
print(result)
此将匹配所有内容
在时间戳之后,如“2020-05-19 07:25:46.768:
之后是“Last Msg Time=5/18/2020 11:51:03 AM,ReaderType=Source”
并将结果放入名为result的列表中
我已经用您提供的示例日志测试了代码
您可以在此处测试任何正则表达式:
您可以尝试使用python正则表达式
%
是为了喜欢,就像*
是为了a一样。您可以尝试使用python正则表达式%
是为了喜欢,就像*
是为了a一样。