당신은 그 줄 번호 사용하여 파일을 슬라이스 한 후 "N"패턴의 줄 번호를 찾아 정규식을 사용할 수
import re
n_pat = re.compile(r'N\d')
N_matches = []
with open(sample, 'r') as f:
for num, line in enumerate(f):
if re.match(n_pat, line):
N_matches.append((num, re.match(n_pat, line).group()))
>>> N_matches
[(0, 'N1'), (12, 'N2'), (24, 'N3')]
을
import itertools
first = N_matches[0][0]
final = N_matches[-1][0]
step = N_matches[1][0]
data_set = []
locallist = []
while first < final + step:
with open(file, 'r') as f:
for item in itertools.islice(f, first, first+step):
if item.strip():
locallist.append(item.strip())
dataset.append(locallist)
locallist = []
first += step
:
이러한 패턴이 나타나는 줄 번호를 알아낼 후에는 목록의 목록에 파일을 깰 itertools.islice
을 사용할 수 있습니다
itertools.islice
은 반복 가능한 슬라이스를 만드는 정말 좋은 방법입니다. 다음은 샘플에 위의 결과이다 : 그 후
>>> dataset
[['N1 1.023 2.11 3.789', 'Cl1 3.126 2.6534 1.878', 'Cl2 3.124 2.4534 1.678', 'Cl3 3.924 2.1134 1.1278', 'Cl4', 'Cl5'], ['N2', 'Cl6 3.126 2.6534 1.878', 'Cl7 3.124 2.4534 1.678', 'Cl8 3.924 2.1134 1.1278', 'Cl9', 'Cl10'], ['N3', 'Cl11', 'Cl12', 'Cl13', 'Cl14', 'Cl15']]
, 나는 약간은 당신이하고자하는지에 흐릿 해요,하지만 난 당신이 데이터 세트의 각 하위 목록의 순열을 원한다고 생각?
for item in itertools.permutations(dataset[0]):
print(item)
etc.
최종 참고 : 내가 정확하게 당신이 무슨 일을하는지 이해 가정
는, 순열의 수가 될 것입니다 그렇다면, 당신은 데이터 세트의 여러 하위 목록에 순열을 찾을 itertools.permutations
을 사용할 수 있습니다 거대한. 항목 수의 계승을 통해 순열 수를 계산할 수 있습니다. 10 (10!) 이상인 경우 3,000,000,000 이상의 순열을 생성합니다.