복붙노트

[PYTHON] 파이썬에서 문자열 치환 목록

PYTHON

파이썬에서 문자열 치환 목록

다음 코드를 작성하는 데 훨씬 짧은 방법이 있습니까?

my_string = my_string.replace('A', '1')
my_string = my_string.replace('B', '2')
my_string = my_string.replace('C', '3')
my_string = my_string.replace('D', '4')
my_string = my_string.replace('E', '5')

정확한 값을 대체 할 필요는 없습니다. 5 회선을 5 개 미만으로 변환하는 방법을 찾고 있습니다.

해결법

  1. ==============================

    1.루프를 사용할 좋은 기회 인 것처럼 보입니다.

    루프를 사용할 좋은 기회 인 것처럼 보입니다.

    mapping = { 'A':'1', 'B':'2', 'C':'3', 'D':'4', 'E':'5'}
    for k, v in mapping.iteritems():
        my_string = my_string.replace(k, v)
    

    괄호에 신경 쓰지 않는다면 더 빠른 접근 방법이 될 것입니다.

    mapping = [ ('A', '1'), ('B', '2'), ('C', '3'), ('D', '4'), ('E', '5') ]
    for k, v in mapping:
        my_string = my_string.replace(k, v)
    
  2. ==============================

    2.string.maketrans ()를 사용하여 str.translate ()에 전달할 매핑 문자열을 쉽게 만들 수 있습니다.

    string.maketrans ()를 사용하여 str.translate ()에 전달할 매핑 문자열을 쉽게 만들 수 있습니다.

    import string
    trans = string.maketrans("ABCDE","12345")
    my_string = my_string.translate(trans)
    
  3. ==============================

    3.str.translate ()도 살펴보십시오. 유니 코드 문자열을 제공하는 매핑에 따라 문자를 대체하거나 그렇지 않으면 chr (0)에서 chr (255)까지의 각 문자를 바꿀 문자를 알려야합니다.

    str.translate ()도 살펴보십시오. 유니 코드 문자열을 제공하는 매핑에 따라 문자를 대체하거나 그렇지 않으면 chr (0)에서 chr (255)까지의 각 문자를 바꿀 문자를 알려야합니다.

  4. ==============================

    4.잘못된 대답을 천천히 원한다면 루프에서 string.replace를 사용하십시오. (이 경우에는 패턴과 대체물이 중복되지 않습니다.)

    잘못된 대답을 천천히 원한다면 루프에서 string.replace를 사용하십시오. (이 경우에는 패턴과 대체물이 중복되지 않습니다.)

    가능한 중복이나 긴 제목 문자열을 사용하는 일반적인 경우 re.sub :

    import re
    
    def multisub(subs, subject):
        "Simultaneously perform all substitutions on the subject string."
        pattern = '|'.join('(%s)' % re.escape(p) for p, s in subs)
        substs = [s for p, s in subs]
        replace = lambda m: substs[m.lastindex - 1]
        return re.sub(pattern, replace, subject)
    
    >>> multisub([('hi', 'bye'), ('bye', 'hi')], 'hi and bye')
    'bye and hi'
    

    1 문자 패턴 및 1 문자 또는 0 문자 대체의 특별한 경우에는 string.maketrans를 사용하십시오.

  5. ==============================

    5.

    replaceDict = {'A':'1','B':'2','C':'3','D':'4','E':'5'}       
    for key, replacement in replaceDict.items():  
      my_string = my_string.replace( key, replacement )
  6. ==============================

    6.내가하는 한 가지 방법은 연관된 배열 (사전)을 사용하는 것입니다. 다음은 정규 표현식을 사용하여 LaTeX에 배포 할 파일을 준비 할 때 사용하는 대체 파일의 예입니다.

    내가하는 한 가지 방법은 연관된 배열 (사전)을 사용하는 것입니다. 다음은 정규 표현식을 사용하여 LaTeX에 배포 할 파일을 준비 할 때 사용하는 대체 파일의 예입니다.

      import re
      def escapeTexString(string): # Returns TeX-friendly string
        rep = { # define desired replacements in this dictionary (mapping)
             '&': '\\&',
             '%': '\\%',
             '#': '\\#',
             '_': '\\_',
             '{': '\\{', # REGEX Special
             '}': '\\}', # REGEX Special
             '~': '\\char"007E{}', # LaTeX Special
             '$': '\\$', # REGEX Special
             '\\': '\\char"005C{}', # REGEX/LaTeX Special
             '^': '\\char"005E{}', # REGEX/LaTeX Special
             '"': '\\char"FF02{}'
            }
        # use these two lines to do the replacement (could be shortened to one line)
        pattern = re.compile("|".join(map(re.escape,rep.keys()))) # Create single pattern object (key to simultaneous replacement)
        new_string = pattern.sub(lambda match: rep[match.group(0)], string)
        return new_string
    
  7. from https://stackoverflow.com/questions/764360/a-list-of-string-replacements-in-python by cc-by-sa and MIT license