{fieldname component ! conversionflag : format_spec} 와 같은 형태를 가진다.

 

fieldname : 0,1,2와 같은 번호나 surname, givenname과 같은 키워드를 사용할 수 있다.

component : [index]와 같이 리스트 콤포넌트를 사용하거나 .attr 와 같이 attributes가 있다면 사용할 수 있다.

conversion flag : ! 다음에 r,s 가 오거나 repr, str ascii func등을 부를 수 있다.

 

format_spec

 

[[fill]align] [sign] {#] [0] [width] [,] [.prec] [typecode] 형태로 이루어진다.

 

[fill] : *** --- 등 좌우 여백을 채울 문자를 넣는다.

[align] : <,>,^,= 등을 넣는다

[sign] : +,-, space

[,] : thousands separator

 

'Python > string' 카테고리의 다른 글

반복되는 문자열 찾기  (0) 2019.12.27
binary, utf-8, utf-16  (0) 2019.12.27
append, pop, sort, reverse  (0) 2019.12.27
encode, decode  (0) 2019.12.26
ascii, hex, unicode  (0) 2019.12.26

In [127]: import re

...:

...: def findall(SearchKey,Sentence):

...: rtn=[[m.group(),m.start(),m.end()] for m in re.finditer(SearchKey,Sentence)]

...: return rtn

 

In [128]: res2="abc aa bb ddd dhfksa kdafja kdasfjal qoqrfj"

 

In [123]: a=findall('(\w)\1+',res2)


In [124]: a

Out[124]: []


In [125]: a=findall(r'(\w)\1+',res2)


In [126]: a

Out[126]: [['aa', 4, 6], ['bb', 7, 9], ['ddd', 10, 13]]

 

\1은 앞에서 그룹화 했던 부분과 완전히 동일한 것을 말한다.

단순히 \w{2,} 와 같이 하면 동일 문자 반복이 아닌 문자 반복이 된다.

따라서 aa bb와 같이 앞에 나온 것과 동일한 문자를 반복할 때는 그룹화를 시켜준 다음 \1 \2와 같이 그룹의 번호를 사용하면 된다.


r' '와 같이 raw string을 사용하는 것이 편리하다.

 

'Python > string' 카테고리의 다른 글

format string  (0) 2019.12.27
binary, utf-8, utf-16  (0) 2019.12.27
append, pop, sort, reverse  (0) 2019.12.27
encode, decode  (0) 2019.12.26
ascii, hex, unicode  (0) 2019.12.26

일반적으로 함수의 반환 값은 return으로 정해진다.

 

함수의 부분에 return 이 나타나면 return 다음에 나오는 변수를 반환하고 함수는 종료된다.

 

return 대신에 yield 가나타나면, python은 그 함수를 generator로 인식하며 next 함수가 작동할수 있게 된다.

 

예제)

In [31]: def G():

...: n=0

...: while True:

..........: input = yield 'output'

..........: n=n+1

..........: print(n)

...:

 

In [39]: g=G()

 

In [40]: next(g) # 함수 4번째 줄까지만 실행됨

Out[40]: 'output'

 

In [41]: next(g) #함수 5,6 줄이 실행되고 다시 while loop 처음으로 돌아가 두번째 yield까지 실행됨

1

Out[41]: 'output'

 

In [42]: next(g)

2

Out[42]: 'output'

 

In [43]: next(g)

3

Out[43]: 'output'

 

위 예제에서 yield 식의 값은 항상 None이다.

함수 안에 yield 가 존재하면 python은 generator로 인식하고, next함수에 의하여 call되면,

 

1. 최초에는 함수의 처음부터 yield가 나타나는 지점까지만 시행되고 yield 가 반환한 값을 반환하면서 종료된다.

2. 종료된 지점과 값은 그대로 메모리에 남아 있다가

3. 다음 next가 시행되면 기억된 지점과 변수를 사용하여 아까 중단된 시점부터 다음 yield가 작동될때 까지 함수가 실행된다.

4. 위 예제에선 while loop 안에 yield가 있으므로 무한히 작동되고 첫줄의 n=0는 한번만 시행된다.

5. while loop 안에 없거나 함수의 끝에 도달되면 generator 끝에 도달하는 것과 같이 에러를 내며 종료한다.

 

예제2)

 

In [62]: def G2():

...: n=0

...: yield 'output'

...: n=n+1

...: print(n)

...: yield n

...:

 

In [63]: g=G2()

 

In [64]: next(g) # 함수 3번째 줄까지만 실행됨

Out[64]: 'output'

 

In [65]: next(g) # 함수 4,5,6번째 줄이 실행됨

1

Out[65]: 1

 

In [66]: next(g) # 다음 yield는 없으므로 에러를 내며 종료됨

Traceback (most recent call last):

 

File "", line 1, in

next(g)

 

StopIteration

 

'Python > function' 카테고리의 다른 글

map  (0) 2019.12.27

+ Recent posts