2017-03-12 7 views
-4

파이썬 3 : 문자열 (방정식)이 주어지면 양수 및 음수 목록을 반환하십시오. 다양한 정규식 및 목록 이해 솔루션을 사용해 보았습니다. 수학 식 4 + 또는 -5 3X + 2Y 또는 -7y-배 반환 감안파이썬 : 문자열의 양수 및 음수를 필터링하십시오.

[4,3], [-5,2], [-8, -2]

입력

str = '-7y-2x' 

출력

my_list = [-7, -2] 
+0

A [mcve] 최신 시도의 제공 및 코드를 참조하여 설명해주십시오 탈출 다른 접두어로하는 무엇을 문제가 있습니다. – idjaw

+0

이 질문에 왜 많은 downvotes가 있었는지 이해할 수 없습니다. 네, 영업 이익은 그의 노력을 보여주지 못했지만, 적어도 그는 투입량과 예상 생산량을 보여 주었고 작업은 매우 간단합니다 – RomanPerekhrest

답변

3

간단한 솔루션 사용 re.findall 기능 :

출력

import re 

s = '-5+2y' 
result = [int(d) for d in re.findall(r'-?\d+', s)] 

print(result) 
:

[-5, 2] 

-?\d+이 - 양 및 음의 정수

일치

원시 문자열 표기법 (r"text")은 정규 표현식을 그대로 유지합니다. 있을 것입니다 정규 표현식에서없이 , 모든 백 슬래시 ('\')는이

+0

이것은 작동합니다. 내가 re.split() 이전과 훨씬 더 긴 정규식을 시도했다. 그래서 - 선택 사항이며 숫자는 그렇지 않습니다. 'r'은 무엇인가? –

+0

@JamesGoldstein, * 원시 문자열 표기법 (** r "text"**)은 정규 표현식을 제로로 유지합니다. 그것 없이는 정규 표현식의 모든 백 슬래시 ('\')에 접두사를 붙이면 이스케이프 처리됩니다. * – RomanPerekhrest

1

이 정규식가 문제를 해결해야한다.

[\+\-]?[0-9]+ 

또한 다음과 같은 코드가 있습니다.

import re 
regex = re.compile(r'[\+\-]?[0-9]+') 
nums = [int(k) for k in regex.findall('5-21x')]