사용 itertools.groupby
그룹 :
>>> from itertools import groupby
>>> lst = ['S', 't', 'u', 'a', 'r', 't', ' ', 'S', 't', 'e', 'v', 'e', ' ', 'A', 'n', 'd', 'r', 'e', 'w', ' ', 'L', 'u', 'k', 'e', ' ', 'S', 'h', 'a', 'n', 'e', 'y', ' ', 'L', 'u', 'k', 'e', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'R', 'o', 'b', ' ']
>>> [''.join(g) for k, g in groupby(lst, key=str.isspace) if not k]
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']
나는 텍스트 파일에서 읽고 있습니다. 나는 그 텍스트를 깨뜨려서 리스트에 넣었고, 이제는 그것을 얻는 방법을 궁금해합니다. 그래서 공백이있을 때이를 인식하고 이에 따라 데이터를 연결합니다. 확실하지 않아요 비록
이 텍스트를 어떻게 읽었는지 모르지만 그것을 잘못 처리하고 있습니다.
>>> s.split()
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']
: 당신은 단순히 당신이 읽은 텍스트에
str.split
를 사용하는 단어의 목록을 원하는 경우
>>> s = 'Stuart Steve Andrew Luke Shaney Luke Moley Moley Rob'
>>> list(s)
['S', 't', 'u', 'a', 'r', 't', ' ', 'S', 't', 'e', 'v', 'e', ' ', 'A', 'n', 'd', 'r', 'e', 'w', ' ', 'L', 'u', 'k', 'e', ' ', 'S', 'h', 'a', 'n', 'e', 'y', ' ', 'L', 'u', 'k', 'e', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'R', 'o', 'b']
: 파일에서 읽은 행 또는 전체 텍스트 list()
를 호출하지 마십시오
>>> [i for i in "".join(li).split(" ") if i.strip() != ""]
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']
목록의 이해 그냥 빈 문자열을 제외하는 것입니다 - li
을 고려
' ''.join (your_list) .split()' – vaultah
이것은 가능하지만 어떻게 첫 번째 목록을 얻었습니까? 데이터를 엉망진창에 넣고 고치지 않고 첫 번째로 더 나은 형식으로 데이터를 저장해야합니다. –
@vaultah 그러면 목록이 아닌 문자열이됩니다. –