복붙노트

[PYTHON] 파이썬에서 문자열을 분할하지 않고 튜플로 변환

PYTHON

파이썬에서 문자열을 분할하지 않고 튜플로 변환

나는 문자열을 문자열로 변환하지 않고 튜플로 변환하려고 노력 중이다. 누군가 쉽게 이것을 할 수있는 방법을 제안 할 수 있습니까? 하나의 라이너가 필요합니다.

실패

   a = 'Quattro TT'
   print tuple(a)

공장

  a = ['Quattro TT']  
  print tuple(a)

내 입력이 문자열이기 때문에 문자열을 목록으로 변환하여 아래 코드를 시도해 보았습니다. 다시 목록을 문자로 분할합니다.

실패

a = 'Quattro TT'
print tuple(list(a))

예상 출력 :

('Quattro TT')

생성 된 출력 :

('Q', 'u', 'a', 't', 't', 'r', 'o', ' ', 'T', 'T')

해결법

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

    1.당신은 (a,) 할 수 있습니다. 기능을 사용할 필요가 없습니다. (쉼표가 필요합니다.)

    당신은 (a,) 할 수 있습니다. 기능을 사용할 필요가 없습니다. (쉼표가 필요합니다.)

    근본적으로, 튜플 (a)은 a 자체의 튜플이 아니라 튜플의 내용을 만드는 것을 의미합니다. 문자열의 "내용"(반복 할 때 얻을 수있는 내용)은 문자이므로 문자로 분할됩니다.

  2. ==============================

    2.튜플에 관한 파이썬 튜토리얼을 살펴보십시오.

    튜플에 관한 파이썬 튜토리얼을 살펴보십시오.

    문자열 객체 주위에 한 쌍의 괄호 만 넣으면 해당 표현식을 괄호로 묶은 표현식으로 바꿉니다 (강조가 추가됨).

    그건 (파이썬 2.7 가정),

    a = 'Quattro TT'
    print tuple(a)        # <-- you create a tuple from a sequence 
                          #     (which is a string)
    print tuple([a])      # <-- you create a tuple from a sequence 
                          #     (which is a list containing a string)
    print tuple(list(a))  # <-- you create a tuple from a sequence 
                          #     (which you create from a string)
    print (a,)            # <-- you create a tuple containing the string
    print (a)             # <-- it's just the string wrapped in parentheses
    

    예상대로 출력됩니다.

    ('Q', 'u', 'a', 't', 't', 'r', 'o', ' ', 'T', 'T')
    ('Quattro TT',)
    ('Q', 'u', 'a', 't', 't', 'r', 'o', ' ', 'T', 'T')
    ('Quattro TT',)
    Quattro TT
    

    print 문에 몇 가지 메모를 추가합니다. Python 2.7에서 print 구문의 일부로 단일 요소 튜플을 만들려고하면 (print (a,)와 같이) 괄호로 묶은 양식을 사용해야합니다. 그 이유는 인쇄 a의 후행 쉼표가 그 중 일부로 간주되기 때문입니다. print 문은 결과적으로 생성되는 튜플이 아닌 출력에서 ​​개행을 억제합니다.

    Python 3.x에서 위 예제의 대부분은 실제로 Python 3에서 인쇄가 함수로 바뀌기 때문에 SyntaxError를 발생시킵니다 (여분의 괄호 쌍을 추가해야 함). 그러나 특히 이것은 혼란을 야기 할 수 있습니다 :

    print (a,)            # <-- this prints a tuple containing `a` in Python 2.x
                          #     but only `a` in Python 3.x
    
  3. ==============================

    3.누군가 "Quattro"와 "TT"라는 문자열의 각 부분을리스트의 요소에 할당하는 튜플을 만드는 방법을 알고 자한다면 여기에 프린트 튜플 (a.split ())

    누군가 "Quattro"와 "TT"라는 문자열의 각 부분을리스트의 요소에 할당하는 튜플을 만드는 방법을 알고 자한다면 여기에 프린트 튜플 (a.split ())

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

    4.이 함수를 사용하여 문자열을 튜플로 변환합니다.

    이 함수를 사용하여 문자열을 튜플로 변환합니다.

    import ast
    
    def parse_tuple(string):
        try:
            s = ast.literal_eval(str(string))
            if type(s) == tuple:
                return s
            return
        except:
            return
    

    용법

    parse_tuple('("A","B","C",)')  # Result: ('A', 'B', 'C')
    

    당신의 경우에는

    value = parse_tuple("('%s',)" % a)
    
  5. ==============================

    5.다음 솔루션을 사용할 수 있습니다.

    다음 솔루션을 사용할 수 있습니다.

    s="jack"
    
    tup=tuple(s.split(" "))
    
    output=('jack')
    
  6. ==============================

    6.이 하위 클래스 인스턴스 중 일부가 1 문자열 인스턴스 일 필요가있는 튜플을 서브 클래 싱하는 것은 흥미로운 것을 던집니다.

    이 하위 클래스 인스턴스 중 일부가 1 문자열 인스턴스 일 필요가있는 튜플을 서브 클래 싱하는 것은 흥미로운 것을 던집니다.

    class Sequence( tuple ):
        def __init__( self, *args ):
            # initialisation...
            self.instances = []
    
        def __new__( cls, *args ):
            for arg in args:
                assert isinstance( arg, unicode ), '# arg %s not unicode' % ( arg, )
            if len( args ) == 1:
                seq = super( Sequence, cls ).__new__( cls, ( args[ 0 ], ) )
            else:
                seq = super( Sequence, cls ).__new__( cls, args )
            print( '# END new Sequence len %d' % ( len( seq ), ))
            return seq
    

    NB는이 스레드에서 배웠으므로 args [0] 뒤에 쉼표를 써야합니다.

    인쇄 줄은 하나의 문자열이 나뉘어지지 않는다는 것을 보여줍니다.

    주의 이제 하위 클래스의 생성자에있는 쉼표가 선택 사항이됩니다.

    Sequence( u'silly' )
    

    또는

    Sequence( u'silly', )
    
  7. ==============================

    7.이것은 단순한 경우에만 적용됩니다.

    이것은 단순한 경우에만 적용됩니다.

    a = ‘Quattro TT’
    print tuple(a)
    

    ','와 같은 구분 기호 만 사용하면 작동 할 수 있습니다.

    configparser에서 문자열을 다음과 같이 사용했습니다.

    list_users = (‘test1’, ‘test2’, ‘test3’)
    and the i get from file
    tmp = config_ob.get(section_name, option_name)
    >>>”(‘test1’, ‘test2’, ‘test3’)”
    

    이 경우 위의 해결책은 작동하지 않습니다. 그러나 이것은 작동하지 않습니다.

    def fot_tuple(self, some_str):
         # (‘test1’, ‘test2’, ‘test3’)
         some_str = some_str.replace(‘(‘, ”)
         # ‘test1’, ‘test2’, ‘test3’)
         some_str = some_str.replace(‘)’, ”)
         # ‘test1’, ‘test2’, ‘test3’
         some_str = some_str.replace(“‘, ‘”, ‘,’)
         # ‘test1,test2,test3’
         some_str = some_str.replace(“‘”, ‘,’)
         # test1,test2,test3
         # and now i could convert to tuple
         return tuple(item for item in some_str.split(‘,’) if item.strip())
    
  8. from https://stackoverflow.com/questions/16449184/python-converting-string-to-tuple-without-splitting-characters by cc-by-sa and MIT license