필자는 Python을 사용하여 자신의 응용 프로그램을 간단한 계정 관리자로 만들려고 노력해 왔습니다.이 응용 프로그램은 휴대 전화에서 SMS를 읽고 일부 정규식 패턴을 기반으로 정보를 추출합니다.파이썬에서 regex에서 단 하나의 문자열을 추출하는 방법은 무엇입니까?
복잡한 정규 표현식 패턴을 작성한 후 https://pythex.org/에서 테스트했습니다. 예 : 나는 str.extract() 메소드를 사용하기보다는 하나의 결과를 얻는 파이썬에서 동일한 작업을 수행 할 때
그러나Text: 1.00 is debited from ******1234 for food
Pattern: (account|a\/c|ac|from|acct|savings|credit in|ac\/|sb\-|acc|a\/c)(\s|\.|\-)*(no|number)*(\.|\s|:)*\s*(ending)*\s*(((n{1,}|x{1,}|[0-9]+|\*{1,}))+)\-*((n{1,}|x{1,}|[0-9]+|\*{1,}|\s))*\-*([0-9]*)
Result: from ******1234
는, 나는 각 그룹에 대한 열이있는 dataframe을 얻고있다.
파이썬 코드는 다음과 같습니다 : 위의 메시지에 대한 파이썬 코드의
all_sms=pd.read_csv("all_sms.csv")
pattern = '(account|a\/c|ac|from|acct|savings|credit in|ac\/|sb\-|acc|a\/c)(\s|\.|\-)*(no|number)*(\.|\s|:)*\s*(ending)*\s*(((n{1,}|x{1,}|[0-9]+|\*{1,}))+)\-*((n{1,}|x{1,}|[0-9]+|\*{1,}|\s))*\-*([0-9]*)'
test = all_sms.extract(pattern, expand = False)
출력 :
0 from
1
2 NaN
3 NaN
4 NaN
5 ******1234
6 1234
7 1234
8
9
10
내가 파이썬에 아주 새로운 오전과 실무 경험을 통해 배우려고 노력하고, 누군가 내가 이것을 잘못 알고 있다고 지적 할 수 있다면 정말 도움이 될 것입니다.
각각의 이스케이프 처리되지 않은'('.) 중복 캡쳐 그룹 제거 –
구체적인 언어에 관한 내용은 언어 태그 사용을 고려하십시오. – doctorlove