복붙노트

[PYTHON] 파일의 탭을 기준으로 문자열 분할

PYTHON

파일의 탭을 기준으로 문자열 분할

탭 ( "\ t")으로 구분 된 값을 포함하는 파일이 있습니다. 목록을 만들고 목록에있는 모든 파일 값을 저장하려고합니다. 하지만 문제가 생겼어. 여기 내 코드가있다.

line = "abc def ghi"
values = line.split("\t")

각 값 사이에 탭이 하나만 있으면 제대로 작동합니다. 그러나 하나 이상의 탭이 있으면 테이블에 값을 복사합니다. 제 경우에는 대부분 추가 ​​탭이 파일의 마지막 값 뒤에옵니다. 아무도 저를 도울 수 있습니까.

해결법

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

    1.당신은 여기에 정규식을 사용할 수 있습니다 :

    당신은 여기에 정규식을 사용할 수 있습니다 :

    >>> import re
    >>> strs = "foo\tbar\t\tspam"
    >>> re.split(r'\t+', strs)
    ['foo', 'bar', 'spam']
    

    최신 정보:

    str.rstrip을 사용하여 '\ t'를 제거한 다음 regex를 적용 할 수 있습니다.

    >>> yas = "yas\t\tbs\tcda\t\t"
    >>> re.split(r'\t+', yas.rstrip('\t'))
    ['yas', 'bs', 'cda']
    
  2. ==============================

    2.regexp를 사용하면 다음과 같이 할 수 있습니다.

    regexp를 사용하면 다음과 같이 할 수 있습니다.

    import re
    patt = re.compile("[^\t]+")
    
    
    s = "a\t\tbcde\t\tef"
    patt.findall(s)
    ['a', 'bcde', 'ef']  
    
  3. ==============================

    3.탭에서 나누기를 선택하고 빈 칸을 모두 제거하십시오.

    탭에서 나누기를 선택하고 빈 칸을 모두 제거하십시오.

    text = "hi\tthere\t\t\tmy main man"
    print [splits for splits in text.split("\t") if splits is not ""]
    

    출력 :

    ['hi', 'there', 'my main man']
    
  4. ==============================

    4.다른 정규식 기반 솔루션 :

    다른 정규식 기반 솔루션 :

    >>> strs = "foo\tbar\t\tspam"
    
    >>> r = re.compile(r'([^\t]*)\t*')
    >>> r.findall(strs)[:-1]
    ['foo', 'bar', 'spam']
    
  5. ==============================

    5.파이썬은 시조가 된 csv 모듈에서 CSV 파일을 지원합니다. 비교적 쉼표로 분리 된 값을 훨씬 더 많이 지원하므로 상대적으로 잘못 명명됩니다.

    파이썬은 시조가 된 csv 모듈에서 CSV 파일을 지원합니다. 비교적 쉼표로 분리 된 값을 훨씬 더 많이 지원하므로 상대적으로 잘못 명명됩니다.

    기본적인 단어 분리를 넘어서는 경우 좀 봐야합니다. 예를 들어 인용 된 값을 처리해야하기 때문에 ...

  6. from https://stackoverflow.com/questions/17038426/splitting-a-string-based-on-tab-in-the-file by cc-by-sa and MIT license