S3 버킷에서 파일을 읽으려고하고 정규식 패턴으로 파싱하려고합니다. 그러나, 나는 한 줄씩 파일을 읽는 것을 알아낼 수 없었다. 이 작업을 수행하는 방법 또는 구문 분석을 위해이 작업을 수행하는 다른 방법이 있습니까?AWS S3에서 boto3을 사용하여 파일 구문 분석
pattern = '^(19|20)\d\d[-.](0[1-9]|1[012])[-.](0[1-9]|[12][0-9]|3[01])[ \t]+([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9][ \t]+(?:[0-9]{1,3}\.){3}[0-9]{1,3}[ \t]+(?:GET|POST|PUT)[ \t]+([^\s]+)[ \t]+[1-5][0-9][0-9][ \t]+(\d+)[ \t]+(\d+)[ \t]+"(?:[^"\\]|\\.)*"[ \t]+"(?:[^"\\]|\\.)*"[ \t]+"(?:[^"\\]|\\.)*"'
s3 = session.resource('s3')
bucket_name = s3.Bucket(bucket)
data = [obj for obj in list(bucket_name.objects.filter(Prefix=prefix)) if obj.key != prefix]
for obj in data:
key = obj.key
body = obj.get()['Body'].read()
print(key)
print(body)
for line in body:
print(line)
그래서 올바른 파일을 볼 수 있으며 파일의 전체 본문을 읽을 수 있습니다 (IIS 로그와 유사). 그러나 선을 반복 할 때 숫자가 표시됩니다. 따라서 print(line)
의 출력은
35
101
119
147
etc.
이 번호의 출처는 알 수 없습니다. 그들은 단어, 인물, 다른 것입니까?
제 목표는 파일을 정규식 연산자로 한 줄씩 읽을 수있게되면 패턴을 적용하는 것입니다.
편집 : 저는 여기에 솔루션 아래에 사용하고 아래 내용
2016-06-14 14:03:42 1.1.1.1 GET /origin/ScriptResource.axd?=5f9d5645 200 26222 0 "site.com/en-US/CategoryPage.aspx" "Mozilla/5.0 (Linux; Android 4.4.4; SM-G318HZ Build/KTU84P)" "ASP.NET_SessionId=emfyTVRJNqgijw=; __SessionCookie=bQMfQzEtcnfMSQ==; __CSARedirectTags=ABOcOxWK/O5Rw==; dtCookie=B52435A514751459148783108ADF35D5|VVMrZVN1aXRlK1BXU3wx"
내 대답을 확인하십시오. –