[1] B. Aditya, G. Bhalotia, S. Chakrabarti, A. Hulgeri, C. Nakhe, P. Parag, and S. Sudarshan. Banks: browsing and keyword searching in relational databases. In Proc. VLDB Conf., pages 1083–1086. VLDB Endowment, 2002.
[2] S. Agrawal, S. Chaudhuri, and G. Das. Dbxplorer: A system for keyword-based search over relational databases. In Proc. ICDE Conf., page 5, Washington, DC, USA, 2002. IEEE Computer Society.
[3] S. Basu Roy, H. Wang, G. Das, U. Nambiar, and M. Mohania. Minimum-effort driven dynamic faceted search in structured databases. In Proc. CIKM, pages 13–22, 2008.
이 문장들에서 저자들의 이름, 연도, 논문 제목을 따로 리스트화 해서 추출해내야 합니다
그러기 위해 import re를 하고 정규표현식을 한 후 group()을 활용 하려고 하지만
위와 같은 문장들이 30~40여개 됩니다ㅠㅠ
제가 연도를 추출하기 위해 만든 코드는
import re
text = (리스트에서 추출)
regex = re.compile(r'20\d\d')
matchobj = regex.search(text)
years = matchobj.group()
이렇게 되는데 text에 수많은 문장을 어찌 넣고 그 외에 이름과 논문 제목은 어떻게 추출해야하는 지 막히네요..
# -*- coding: utf-8 -*-# [3] 엔 이름과 논문제목 사이에 ":" 대신 "." 이 있어서 전체적으로 규칙성을 부여하기 힘드므로# 원본자료를 "." 대신 ":" 으로 수정을 했습니다.
kdata ="""\
[1] B. Aditya, G. Bhalotia, S. Chakrabarti, A. Hulgeri, C. Nakhe, P. Parag, and S. Sudarshan. Banks: browsing and keyword searching in relational databases. In Proc. VLDB Conf., pages 1083–1086. VLDB Endowment, 2002.
[2] S. Agrawal, S. Chaudhuri, and G. Das. Dbxplorer: A system for keyword-based search over relational databases. In Proc. ICDE Conf., page 5, Washington, DC, USA, 2002. IEEE Computer Society.
[3] S. Basu Roy, H. Wang, G. Das, U. Nambiar, and M. Mohania: Minimum-effort driven dynamic faceted search in structured databases. In Proc. CIKM, pages 13–22, 2008.
"""importre
klines = kdata.split("\n")
kname =[]
ksubject =[]
kyear =[]def kname_search(s):
p =re.search("\].+(?=:)", s)
kname.append(p.group(0)[2:])def ksubject_search(s):
p =re.search("(?<=: ).+[a-z][.]", s)
pp = p.group(0)
ppp = pp.split(".")[0]
ksubject.append(ppp)def kyear_search(i):
p =re.search("19[0-9][0-9]|20[0-9][0-9]", i)
kyear.append(p.group(0))for line in klines:
iflen(line)!=0:
kname_search(line)for line in klines:
iflen(line)!=0:
ksubject_search(line)for line in klines:
iflen(line)!=0:
kyear_search(line)for x, y, z inzip(kyear, ksubject, kname):
print(x,"\t", y,"\t", z)
압도적으로 감사드려요
한가지만 더 질문 드려도 될까요?
Traceback (most recent call last):
File "C:/Users/user/Desktop/3.py", line 37, in
kname_search(line)
File "C:/Users/user/Desktop/3.py", line 23, in kname_search
kname.append(p.group(0)[2:])
AttributeError: 'NoneType' object has no attribute 'group'
>>> 해당 에러는 파이썬 버전에 따른 에러인가요?>
예를 들면
2002 | 이름 | 논문제목
2002 | 이름 | 논문제목
2008 | 이름 | 논문제목
이렇게요?
뭘 어떻게 하든 정규표현식은 들어갈수밖에 없네요;;;
그리고 좀 더 자세하게 자세하게 자세하게 더욱더 자세한 정보와 하고자 하는바가 무엇인지를 더 많은 정보를 주셔야 테스트 코드라도 작성해볼 수 있어요~
네! 말씀해주신데로 연도와 저자 이름들, 논문 제목을 추출해야 합니다
[1] B. Aditya, G. Bhalotia, S. Chakrabarti, A. Hulgeri, C. Nakhe, P. Parag, and S. Sudarshan. Banks: browsing and keyword searching in relational databases. In Proc. VLDB Conf., pages 1083–1086. VLDB Endowment, 2002.
[2] S. Agrawal, S. Chaudhuri, and G. Das. Dbxplorer: A system for keyword-based search over relational databases. In Proc. ICDE Conf., page 5, Washington, DC, USA, 2002. IEEE Computer Society.
[3] S. Basu Roy, H. Wang, G. Das, U. Nambiar, and M. Mohania. Minimum-effort driven dynamic faceted search in structured databases. In Proc. CIKM, pages 13–22, 2008.
이 문장들에서 저자들의 이름, 연도, 논문 제목을 따로 리스트화 해서 추출해내야 합니다
그러기 위해 import re를 하고 정규표현식을 한 후 group()을 활용 하려고 하지만
위와 같은 문장들이 30~40여개 됩니다ㅠㅠ
제가 연도를 추출하기 위해 만든 코드는
import re
text = (리스트에서 추출)
regex = re.compile(r'20\d\d')
matchobj = regex.search(text)
years = matchobj.group()
이렇게 되는데 text에 수많은 문장을 어찌 넣고 그 외에 이름과 논문 제목은 어떻게 추출해야하는 지 막히네요..
음...
출력결과 스크린샷입니다 ;;;
우분투 18.04 파이썬 3.6.9 로 테스트를 했씁니다.
정말 감사드립니다
압도적으로 감사드려요
한가지만 더 질문 드려도 될까요?
Traceback (most recent call last):
File "C:/Users/user/Desktop/3.py", line 37, in
kname_search(line)
File "C:/Users/user/Desktop/3.py", line 23, in kname_search
kname.append(p.group(0)[2:])
AttributeError: 'NoneType' object has no attribute 'group'
>>> 해당 에러는 파이썬 버전에 따른 에러인가요?>
마우스로 긁어붙여넣기하면서 klines[1],
마우스로 긁어붙여넣기하면서 klines[1], klines[3], klines[5] 길이가 0에서 1로 변하면서 그룹을 찾지못한다는 에러가 나타났습니다. 그래서 for문의 조건을 조금 보완했습니다.
일단 확실하게 해두기위하야... RAW 파일을 내려받아서 일단 테스트 해보십시오.
우분투 18.04 파이썬 3.7.5 에서 테스트를 했습니다. 성공.
https://gitlab.com/soyeomul/test/raw/4395aa92762329025bf345044b3993481656f072/162501.py
파이썬3 드림
출력양식을 조금 바꾸어봤습니다.
스크린샷도 함께 첨부합니다.
[우분투 18.04 파여폭스 나비에서 작성했습니다]
--
^고맙습니다 감사합니다_^))//
댓글 달기