>source

지금은 모든 줄 뒤에 쉼표가 표시되지만 두 줄마다 쉼표를 삽입해야합니다. 여기에 제가 작업중인 텍스트가 있습니다. 제품 사양 :

LEVERANDØRENS VARENUMMER
31358DC2
EAN NUMMER
4005176465017

내 코드는 다음과 같습니다.

specification.text.replace("\n",",").strip()

이 코드는 모든 줄의 끝에 쉼표를 제공하지만 두 줄마다 쉼표가 필요합니다. 내 결과는 다음과 같습니다.

LEVERANDØRENS VARENUMMER,31358DC2,EAN NUMMER,4005176465017

내 예상 결과는 다음과 같습니다.

LEVERANDØRENS VARENUMMER 31358DC2,EAN NUMMER 4005176465017

  • 답변 # 1

    이 행을 사용하여 각 두 행을 쉼표로 결합 할 수 있습니다.

    from itertools import izip_longest as izip # For Python 2
    from itertools import zip_longest as izip # For Python 3
    splitted = specification.text.split('\n')
    text = ', '.join([' '.join([first, second]) if second else first for first, second in izip(splitted[::2], splitted[1::2])])
    print(text)
    
    

    산출:

    'LEVERANDØRENS VARENUMMER 31358DC2, EAN NUMMER 4005176465017'
    
    

    추신 줄 수가 항상 균등하다는 것을 알고 있다면 솔루션을 단순화하고 문제를 해결할 수 있습니다. zip :

    text = ', '.join([' '.join([first, second]) for first, second in zip(splitted[::2], splitted[1::2])])
    
    

  • 답변 # 2

    편집 : 외부 라이브러리를 사용하지 않으려는 경우에만이 방법을 사용하는 것이 좋습니다. itertools (Jason의 답변에 언급 됨)와 같은 라이브러리에 액세스 할 수있는 경우이를 사용해야합니다.

    <시간 />

    이것은 완전히 사소한 것이 아닙니다. 제가 모아 놓은이 기능은 여러분이 요청한대로 수행해야합니다 (매 2 개가 아닌 n 번째 캐릭터를 수행 할 수있는 추가 기능 포함).

    def replaceEveryNth(string: str, replace: str, replace_with: str, n: int):
        out = ""
        str_frags = string.split(replace) #split the input string into substrings
        count = 1
        for frag in str_frags[:len(str_frags)-1]:
            out += frag #add substring to output string
            if count % n == 0: #Replace nth character
                out += replace_with
            else: #Use original character
                out += replace
            count += 1
        out += str_frags[len(str_frags)-1] #add last string fragment
        return out
    
    

    특정 상황에서 다음과 같이 사용합니다.

    replaceEveryNth(text, "\n", ",", 2).replace("\n", " ")
    
    

  • 답변 # 3

    쌍으로 행을 반복하는 생성기를 작성할 수 있습니다. 스페이스로 가입 한 다음 가입하세요.쉼표로.

    text = """LEVERANDØRENS VARENUMMER
    31358DC2
    EAN NUMMER
    4005176465017"""
    def grab_2(seq):
        iseq = iter(seq)
        while True:
            try:
                yield next(iseq), next(iseq)
            except StopIteration:
                break
    out = ",".join(" ".join(vals) for vals in grab_2(text.split("\n")))
    print(out)
    
    

관련 자료

  • 이전 java - 사용자가 입력 한 값을 읽을 때 IOException은 무엇입니까?
  • 다음 python - Keras 검증 진행률 출력에 훈련 단계가 잘못 표시됨