기류, Python 및 문자열 연결

15146 단어 stringspythonairflow
이는'Apache Airflow를 사용해야 하지만 Python에 대해 잘 모르거나 모르는 사람을 위한 Python 개념'시리즈의 두 번째 부분이다.
기류개념en passant을 설명하지만 이 글들의 주요 중점은 파이썬개념과 기술이다.
본고에서 나는 문자열 연결을 중점적으로 소개하거나 여러 부분 (예를 들어 하드 인코딩 문자열, 변수,/또는 템플릿) 을 사용하여 텍스트를 조합할 것이다.

왜 연결을 해요?


처음에 나는 본고를Python 데이터 구조(예를 들어 목록과 사전)를 전문적으로 소개하고 싶었지만, 사실 나의 대다수 기류와 관련된 예는 문자열에 관한 것이다.
Python 문자열에 익숙하면 이 글을 건너뛰거나 빠르게 훑어볼 수 있습니다.
나는 이 화제의 다른 원인에 더 관심을 기울이고 싶다.
  • 시간이 지날수록 Python은 문자열 연결을 위한 다양한 방법을 도입했고, 다른 사람이 작성한 코드를 보면 곤혹스러울 때가 있다
  • 이것은 면접 문제의 주제이다. 특히 초급 엔지니어나 분석가
  • 실수하기 쉬움 (오류 = 유지하기 어려운 방식으로)
  • 어떤 사람들은 문자열 연결이 매우 혼란스럽다고 생각한다. 아마도 그럴 것이다.나는 본고의 마지막에 문자열의 연결과 형식을 이해하는 도구를 가지고 있기를 바랍니다.없으면 댓글에 피드백을 적어 주십시오.

    문자열이 있는 기본dag


    from datetime import datetime
    
    from airflow.models import DAG
    from airflow.operators.dummy_operator import DummyOperator
    
    dag_name = "string_sample"
    task1_name = "start"
    task2_name = "end"
    
    my_dag = DAG(dag_id=dag_name + "_dag",
                 start_date=datetime(2020, 4, 29),
                 schedule_interval="0 0 * * *"
                 )
    
    task1 = DummyOperator(dag=my_dag,
                          task_id="task_{}".format(task1_name)
                          )
    
    task2 = DummyOperator(dag=my_dag,
                          task_id=f"task_{task2_name}"
                          )
    
    task1 >> task2
    
    Airflow 웹 UI를 보면 string_sample_dagtask_start 두 가지 작업으로 구성된 DAG가 표시됩니다.마찬가지로 사용되는 산자는 Dummy Operator 산입니다.이 DAG는 파이썬에서 문자열을 연결하고 포맷하는 방법을 보여 주는 핑계일 뿐입니다.

    Python에서 문자열을 연결하는 다양한 방법


    게으른 방식, 퀘스트 종료


    여러 문자열을 연결하는 가장 간단한 방법은 더하기 기호+를 사용하는 것이다.
    dag_name + "_dag"
    
    문자열을 추가하면 효과가 좋습니다. 다음은 또 다른 작업 예입니다.
    >>> text = "world"
    >>> print("hello " + text)
    hello world
    
    이곳은 게으름이 작용하지 않을 때이다.
    >>> text = 123
    >>> print("hello " + text)
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: must be str, not int
    
    + 연산자는 연결을 시도하는 값을 보는 간단한 사람이다.때로는 유효하고, 때로는 무효입니다. 우리의 예에서, 문자열을 정수와 연결할 수 없습니다.작업을 수행하려면 + 를 문자열로 변환해야 합니다.
    >>> print("hello " + str(text))
    hello 123
    

    1, 2, 3 형식이 더 좋아요.


    DAG의 첫 번째 작업에서 두 번째 더 좋은 문자열 연결 방법이 있습니다.string 메서드"123"를 사용하면 템플릿으로 사용할 문자열을 포맷할 수 있습니다.
    "task_{}".format(task1_name)
    
    이전의 "hello world"예시에서 우리의 인사말 템플릿은 .format()입니다. 그 중에서 우리는 .format(), "hello {}" 또는 {} 을 원하지 않습니다.
    >>> text = "world"
    >>> print("hello {}".format(text))
    hello world
    
    숫자에도 적용됩니다.
    >>> text = 123
    >>> print("hello {}".format(text))
    hello 123
    

    여러 값 포함


    >>> greeting = "hello"
    >>> text = "world"
    >>> print("{} {}".format(text, greeting))
    world hello
    
    응, 이건 아닌 것 같아.world 방법은 123 자리 표시자의 출현 순서에 따라 값을 자리 표시자에게 분배한다.물론, 우리는 전달 값의 순서를 전환할 수 있지만, 시간의 추이에 따라 템플릿을 변경할 수 있습니까?
    이런 상황을 피하기 위해서 서수를 사용하거나 더 좋은 것은 자리 표시자를 명명하는 것입니다.
    우선 숫자:
    print("{1} {0}".format(text, greeting))
    hello world
    
    첫 번째 값의 인덱스는 0이고 두 번째 값은 1입니다.
    자리 표시자 이름:
    >>> print("{hi} {who}".format(who=text, hi=greeting))
    hello world
    
    이름 자리 표시자를 사용하면 템플릿 문자열이 더 의미가 있지만 (이 코드를 나중에 보는 것이 더 좋습니다.) 어떤 값이 John, 어떤 값이 .format() 인지 지정해야 합니다.
    자세한 형식 옵션 및 예는 Pythondocumentation here을 참조하십시오.DAG는 필요하지 않을 수도 있지만 스택 오버플로우를 제외하고는 어디서부터 시작해야 하는지 아는 것이 좋습니다.

    {} 문자열


    Python 3.6은 문자열을 포맷하는 새로운 방법을 도입했습니다.
    >>> text = "world"
    >>> print(f"hello {text}")
    hello world
    
    hi는 서식 적용 문자열을 나타냅니다.그러나fast에도 적용된다. 왜냐하면 이런 포맷 방법은 작성 속도가 빠르고 최종 결과를 생성하는 것도 빠르기 때문이다.
    포맷 문자열에서 who 사이의 값은 실행할 때 계산되는 표현식입니다.따라서 다음을 수행할 수 있습니다.
    >>> print(f"{5 - 4} hello to {text.lower()}")
    1 hello to world
    
    마찬가지로 Pythondocumentation을 읽으면 더 많은 용례와 고급 옵션을 발견할 수 있습니다.

    Python 문자열에 대한 다른 내용은 매우 적다


    이것은 DAG를 작성하는 데 사용할 수 없는 세부 사항일 수도 있지만, 특히 문자열에 대한 기본 개요를 완성해야 합니다.
    Python에서 문자열 포맷에 괄호가 사용되고 있음을 알 수 있습니다. 괄호가 포함된 문자열을 어떻게 포맷합니까?두 권,duh:
    >>> print(f"In {{text}} is {text}")
    In {text} is world
    
    따옴표f 어때요?우선, Python에서는 문자열 f{} 을 사용할 수 있으며, 같은 기호를 사용하여 문자열을 닫아야 합니다.또 다른 이유는 따옴표를 피하기 위해서"를 사용했기 때문이다.
    >>> print('This is a double quote: "')
    This is a double quote: "
    >>> print("This is a double quote too: \"")
    This is a double quote too: "
    
    마지막으로 긴 문자열을 어떻게 처리합니까?Python에서는 백슬래시'를 사용하여 긴 행 코드를 여러 줄로 분할할 수 있습니다.
    >>> print("hello " \
    ... "world")
    hello world
    
    보시다시피 Python은 새 줄에 두 개의 문자열을 연결하는 것을 무시합니다. (이를 실현하려면 " 를 실행할 수 있습니다.
    또한 \ 또는 \ 를 사용하여 여러 줄 문자열을 만들 수 있습니다.
    >>> print("""hello
    >>> world""")
    hello
    world
    

    추가 내용


    실제로 Python 문자열, 연결, 형식에 대해서는 아직 할 말이 많지만, 이것은 다른 문장이 필요할 것이다.
    개인적으로 파이썬을 처음 접하는 사람들에게는 이런 일들이 그리 재미있지 않다고 생각한다.하지만 제가 과거에 계속 틀렸습니다. 유니콘에 투표해 주십시오. 제가 틀렸다고 말해 주십시오. 문자열에 대한 더 많은 정보를 알고 싶습니다.

    어떤 것을 사용합니까?



    Python 3.6 이상 버전 "hello \n" - 문자열을 사용하는 것은 실행 가능한 방법입니다. 문자열은 작성 속도가 빠르고 유지 보수가 쉽습니다.
    그러나 나는 우선 빠른 디버깅을 위해 """ (가능하면) 도움을 청한다는 것을 인정한다.''' 야외에서 그것을 사용하는 예가 많거나 주의해야 할 낡은 코드를 만날 수 있기 때문에 언급할 만하다.
    즉, 문서의 링크를 보고 Python이 제공하는 포맷 가능성을 이해하는 것이 좋습니다. 조만간 필요할 것입니다.

    파렴치한 플러그


    지원이나 도움이 필요하시면 언제든지 댓글이나 직접 메시지로 연락 주세요.트위터에서 나와 프로세서를 찾을 수 있다
    .
    만약 당신이 더욱 구조화된 도움을 필요로 한다면, 전화Untitled Data Company(저를 포함)의 좋은 사람들은 당신이 모든 데이터 수요를 만족시키는 것을 기꺼이 도울 것입니다.

    신용


    표지 사진은 Jess Bailey 에서 촬영되었다.

    좋은 웹페이지 즐겨찾기