이 프로세스가 파이썬으로 또는 전혀 작동하지 않게 만드는 방법을 찾으려고 시도합니다. 기본적으로, 나는 줄로 나뉘어 진 정말 긴 텍스트 파일을 가지고있다. 모든 x 개의 줄 수는 주로 대문자 인 줄입니다.이 줄은 대략 해당 구역의 제목이어야합니다. 이상적으로는 제목과 그 이후의 모든 내용을 제목을 파일 이름으로 사용하여 텍스트 파일로 이동하는 것이 좋습니다. 이 경우에는 많은 책이 거기에있을 것이므로이 경우 3039가 발생해야합니다. 지금까지의 프로세스는 다음과 같습니다. 텍스트 파일을 읽는 변수를 작성하여 대부분 대문자인지 알려줍니다.범위가 변경 될 때마다 범위의 각 집합에 대한 모든 행을 새 파일에 작성하여 파이썬 3.6
def mostly_uppercase(text):
threshold = 0.7
isupper_bools = [character.isupper() for character in text]
isupper_ints = [int(val) for val in isupper_bools]
try:
upper_percentage = np.mean(isupper_ints)
except:
return False
if upper_percentage >= threshold:
return True
else:
return False
그 후, 나는 인덱스를 생성 할 수 있도록 카운터를 만든 다음 그것을 결합 :
counter = 0
headline_indices = []
for line in page_text:
if mostly_uppercase(line):
print(line)
headline_indices.append(counter)
counter+=1
headlines_with_articles = []
headline_indices_expanded = [0] + headline_indices + [len(page_text)-1]
for first, second in list(zip(headline_indices_expanded, headline_indices_expanded[1:])):
article_text = (page_text[first:second])
headlines_with_articles.append(article_text)
그 모든 좋은 지금까지 내가 말할 수있는 작동하는 것 같군. 그러나 파일을 인쇄하려고 할 때, 나는 모든 텍스트를 모든 txt 파일에 인쇄합니다.
for i in range(100):
out_pathname = '/sharedfolder/temp_directory/' + 'new_file_' + str(i) + '.txt'
with open(out_pathname, 'w') as fo:
fo.write(articles_filtered[2])
편집 :이 부분이 중간에 있습니다. 이제 각 파일의 첫 번째 줄에 이름을 지정하는 방법이 필요합니다. 하나의 입력 파일을 처리
for i,text in enumerate(articles_filtered):
open('/sharedfolder/temp_directory' + str(i + 1) + '.txt', 'w').write(str(text))