자리 표시자를 포함하는 문자열이 있는데 그 자리 표시자를 추출하려고합니다.자리 표시 자 부분 문자열 찾기
예 :
q = re.compile(r'\%(\w+)%\]')
p= q.findall(string)
^그 그다지 일 " Hello %s, your balance is %d%%"
.
두 자리 표시자를 모두 추출 할 수있는 방법이 있습니까? 형식이 다른데도?
자리 표시자를 포함하는 문자열이 있는데 그 자리 표시자를 추출하려고합니다.자리 표시 자 부분 문자열 찾기
예 :
q = re.compile(r'\%(\w+)%\]')
p= q.findall(string)
^그 그다지 일 " Hello %s, your balance is %d%%"
.
두 자리 표시자를 모두 추출 할 수있는 방법이 있습니까? 형식이 다른데도?
q = re.compile(r'%(\w+)%?')
데모를 참조하십시오.
https://www.regex101.com/r/rC2mH4/11
Infact는 당신이 0 width assertion
를 만들기 위해 %
당신에게 CNA 사용 lookaround을 싶지 않는 경우.
(?<=%)(\w+)%?
데모를 참조하십시오.
문자열에서 's'와 'd'를 모두 추출하는 것이 효과적입니다. "% s"및 "% d %%"을 (를) 추출하려면 어떻게해야합니까? – user1322582
@ user1322582 데모를 확인하십시오.이 두 가지 모두를 추출합니다. '%'도 사용 하시겠습니까? – vks
예, 공백까지 모든 것이 필요합니다.이 방법은 잘 작동합니다 : (% \ w + \ S +)? – user1322582
당신은 template strings 좀보고 할 수 있습니다.
그럼 당신은 간단하게 작성할 수
from string import Template
s = Template('Hello $name, your balance is $balance')
print s.substitute(name='user1322582', balance=33)
# output: Hello user1322582, your balance is 33
The documentation는 "변환 사양"서식 문자열에 대한 옵션을 설명합니다;
>>> import re
>>> s = " Hello %s, your balance is %d%%"
>>> pattern = r'''
% # start of specifier
(?P<key>\([^\)]*\))? # optional mapping key
(?P<flags>[#0\- +])* # optional conversion flags
(?P<width>\*|\d*)? # optional minimum field width
(?P<precision>\.\*|\.\d*)? # optional precision
(?P<lenmod>[hlL])? # optional length modifier
(?P<type>[diouxXeEfFgGcrs%]) # conversion type
'''
>>> [g.groupdict() for g in re.finditer(pattern, s, re.VERBOSE)]
[{'precision': None, 'width': None, 'flags': None, 'key': None, 'lengthmod': None, 'type': 's'},
{'precision': None, 'width': None, 'flags': None, 'key': None, 'lengthmod': None, 'type': 'd'},
{'precision': None, 'width': None, 'flags': None, 'key': None, 'lengthmod': None, 'type': '%'}]
참조 데모 here : 당신이 모든 것을해야하는 경우, 당신은 같은 것을 사용할 수 있습니다. 현재의 예제에서는 너무 잔인하지만 임의의 문자열을 처리하려는 경우에 필요합니다.
이 자리 표시 자 '% s'과 (와)'% d '이 있습니까? –
추출 할 항목이 무엇입니까? 왜 정규식에서'\]'를 사용 했습니까? –
모든 선택적 placeholder 구성 요소는 어떻습니까? – jonrsharpe