3 回答

TA貢獻1802條經驗 獲得超10個贊
您可以使用字符串切片或正則表達式從輸入中獲取此日期。
字符串切片:
text = """19/09/09 10:34:37 INFO tool.ImportTool: --incremental append
19/09/09 10:34:37 INFO tool.ImportTool: --check-column DTIN
19/09/09 10:34:37 INFO tool.ImportTool: --last-value 2019-07-27 00:00:00.0
19/09/09 10:34:37 INFO tool.ImportTool: (Consider saving this with 'sqoop job --create')"""
keyword = "--last-value"
idx = text.index(keyword) + len(keyword) + 1 # keyword index + length of keyword + 1 (space)
last_value = text[idx: text.index("\n", idx)]
正則表達式:
import re
last_value = re.search(r"--last-value (.+)\n", text).group(1)

TA貢獻1772條經驗 獲得超6個贊
正則表達式是你最好的朋友!
如果文件中多次出現“--last-value”,則必須改為使用re.findall()來re.search()獲取所有值,如以下代碼所示:
import re
text = """19/09/09 10:34:37 INFO tool.ImportTool: --incremental append
19/09/09 10:34:37 INFO tool.ImportTool: --check-column DTIN
19/09/09 10:34:37 INFO tool.ImportTool: --last-value 2019-07-27 00:00:01.0
19/09/09 10:34:37 INFO tool.ImportTool: --last-value 2029-07-27 00:00:02.0
19/09/09 10:34:37 INFO tool.ImportTool: (Consider saving this with 'sqoop job --create')"""
sep = '--last-value '
regex = "%s(.+)\n" % sep
string_dates = re.findall(regex, text)
print(string_dates) # ['2019-07-27 00:00:01.0', '2029-07-27 00:00:02.0']
根據您的格式將string_dates列表中的字符串轉換為很有用:datetime
import re
from datetime import datetime as dt
date_format = '%Y-%m-%d %H:%M:%S.%f'
datetime_values = [dt.strptime(res, date_format) for res in string_dates]

TA貢獻1824條經驗 獲得超6個贊
我寫了一個原始的 RegEx。您可以使用它從日志中獲取相關行。
代碼:
import re
data = """19/09/09 10:34:37 INFO tool.ImportTool: --incremental append
19/09/09 10:34:37 INFO tool.ImportTool: --check-column DTIN
19/09/09 10:34:37 INFO tool.ImportTool: --last-value 2019-07-27 00:00:00.0
19/09/09 10:34:37 INFO tool.ImportTool: (Consider saving this with 'sqoop job --create')
19/09/09 10:34:37 INFO tool.ImportTool: --last-value 2019-08-08 04:02:99.2
"""
last_values = re.findall(r"--last-value [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]", data)
print(last_values)
輸出:
>>> python3 test.py
['--last-value 2019-07-27 00:00:00.0', '--last-value 2019-08-08 04:02:99.2']
添加回答
舉報