ASCII code Iteration

ASCII code + Iteration

References

점프 투 파이썬, 05-5 내장 함수

  • 전자 통신을 위해 1963년 문자를 부호화한 것을 ASCII code라고 합니다. 현재는 더 많은 문자를 포함하기 위해 확장이 이루어졌으며 국제 표준은 unicode로 제정되어 있기도 합니다.

  • 워드프로세서(MS word, hwp 등)에서는 특수문자 입력 기능을 이용해 쉽게 입력이 가능하고, 그렇지 않더라도 한글 자음 입력 후 한자 키를 누르는 방식으로도 어렵지 않게 입력이 가능합니다만 간혹 원하는 문자의 코드를 필요로 할 때가 있습니다.


  • 예컨대, 아래와 같은 그래프를 그릴 때입니다.

  • 같은 형식의 그래프를 동시에 그리는데, 논문에 싣거나 하는 등의 이유로 (a)부터 시작하는 넘버링을 해야 하는 사례입니다.

1. (a) ~ (d) 를 하나씩 만들어 주려면 이렇습니다.

1
2
3
4
5
6
7
8
fig, axes = plt.subplots(ncols=4, nrows=1, ... (후략)...)

... (중략) ...

axes[0].text(0.02, 0.98, "(a)", transform=ax.transAxes, fontsize=20, verticalalignment="top",)
axes[1].text(0.02, 0.98, "(b)", transform=ax.transAxes, fontsize=20, verticalalignment="top",)
axes[2].text(0.02, 0.98, "(c)", transform=ax.transAxes, fontsize=20, verticalalignment="top",)
axes[3].text(0.02, 0.98, "(d)", transform=ax.transAxes, fontsize=20, verticalalignment="top",)
  • text의 위치나 크기 등을 조정하려면 n개의 줄을 모두 다 똑같이 수정해야 하므로 좋지 않습니다.

2. list를 쓰면 조금 편하게 할 수 있습니다. 이제 수정시 for loop 안의 한 줄만 고치면 됩니다.

1
2
3
4
5
6
7
8
figid = ['a', 'b', 'c', 'd']

fig, axes = plt.subplots(ncols=4, nrows=1, ... (후략)...)

... (중략) ...

for i in range(4):
axes[0].text(0.02, 0.98, "(figid[i])", transform=ax.transAxes, fontsize=20, verticalalignment="top",)
  • plot 수가 늘어나면 list를 고쳐줘야 해서 성가십니다.
  • plt.subplots()안의 ncols=4for loop 안의 range(4)len(figid) 로 바꾸면 좀 낫습니다.
  • 그러나 리젝을 먹거나 해서 투고할 논문이 바뀌는데, 거기선 (a), (b), … 가 아니라 (i), (ii), … 로 하라고 하면 이것도 짜증납니다.

3. 좀 낯설지만 이렇게 하면 한 곳만 바꾸면 됩니다.

1
2
3
4
5
6
fig, axes = plt.subplots(ncols=4, nrows=1, ... (후략)...)

... (중략) ...

for i in range(4):
axes[0].text(0.02, 0.98, "({})".format(chr(ord("a") + i)), transform=ax.transAxes, fontsize=20, verticalalignment="top",)
  • ord("a")는 “a” 의 ASCII 값을 확인하는 명령입니다.

  • chr()는 ASCII 코드 값을 받아서 해당하는 문자로 바꾸는 명령입니다.

  • chr(ord("a"))+ i를 섞어 for loop 안에 놓으면 , for loop을 한바퀴 돌때마다 “a” 뒤의 문자를 하나씩 불러오는 명령이 됩니다. 처음엔 “a”, 다음엔 “b”, 그 다음에는 “c”를 자동으로 불러옵니다.

     <br>
    
  • 위 코드에서 “a” 대신 원하는 문자를 입력하면 됩니다.

  • 어떤 방법도, 심지어 웹에서 Ctrl + C/V도 가능합니다.

    1
    2
    3
    4
    for i in range(75):
    print("{}".format(chr(ord("㉠") + i)), end=' ')
    if i > 9 and i%10 == 0:
    print('')
    • 실행 결과
    1
    2
    3
    4
    5
    6
    7
    8
    ㉠ ㉡ ㉢ ㉣ ㉤ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ 
    ㉫ ㉬ ㉭ ㉮ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴
    ㉵ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻ ㉼ ㉽ ㉾
    ㉿ ㊀ ㊁ ㊂ ㊃ ㊄ ㊅ ㊆ ㊇ ㊈
    ㊉ ㊊ ㊋ ㊌ ㊍ ㊎ ㊏ ㊐ ㊑ ㊒
    ㊓ ㊔ ㊕ ㊖ ㊗ ㊘ ㊙ ㊚ ㊛ ㊜
    ㊝ ㊞ ㊟ ㊠ ㊡ ㊢ ㊣ ㊤ ㊥ ㊦
    ㊧ ㊨ ㊩ ㊪


도움이 되셨나요?

카페인을 투입하시면 다음 포스팅으로 변환됩니다

Share