나는 정기적으로 다음과 같은 파일에서 텍스트를 추출해야 합니다.
이상적으로는 두 가지 방법이 있습니다.
텍스트의 개별 행만
예:
실제로 출판물이 나왔습니다.이 데이터에 대해 우리는 다음 작업을 진행 중입니다.
최근에 발표된 추가 데이터
단락 형식(Word, Google Docs 등에서 편집할 수 있는 단일 텍스트 블록으로 여러 행의 텍스트 결합)
예:
실제로 이 데이터에 대한 출판물이 있으며 최근에 발표된 더 많은 데이터에 대해 작업 중입니다.
파일을 받으면 모든 것이 A열에 있습니다. 필요하지 않은 두 행의 숫자가 있고 그 뒤에 꼭 필요한 텍스트 행이 있고 그 다음에는 빈 행이 있으며 그 이후에는 수천 행에 대해 패턴이 반복됩니다.
분명히 이 작업을 수동으로 수행하는 데는 시간이 오래 걸리므로 도움을 주시면 대단히 감사하겠습니다.
답변1
A 열의 세 번째 행(예: A3, A7, A10 ...)의 데이터를 추출해야 하는 것 같습니다.
먼저 B열의 처음 두 셀에 3, 7을 쓰고 아래로 드래그하여 3, 7, 10, 13과 같은 계열을 만들어주세요.
이제 C1에 =INDIRECT("A"&B1) 수식을 작성하면 A3 셀의 텍스트가 표시됩니다. A7, A10 등의 텍스트를 표시하려면 수식을 아래로 복사하세요.
모든 텍스트를 결합하려면 Excel 2016이 있는 경우 CONCAT 또는 TEXTJOIN 함수를 사용할 수 있습니다. TEXTJOIN의 장점은 텍스트 사이에 공백이나 쉼표와 같은 구분 기호를 사용할 수 있다는 것입니다. 빈 셀을 무시할 수도 있습니다. 다음 예에서는 공백이 구분 기호로 사용되었으며 True가 빈 셀을 무시하는 데 사용되었습니다.
=TEXTJOIN(" ",TRUE,C1:C11)
이전 버전에서는 CONCATENATE 함수를 사용할 수 있지만 모든 셀 참조를 하나씩 작성해야 합니다.
=CONCATENATE(C1,C2,C3,C4,C5,C6,C7,C8).
답변2
나는 코드를 작성하지 않고도 이 작업을 수행할 수 있는 쉬운 방법은 없다고 생각합니다. 아마도 Excel에서 VBA를 사용하여 수행할 수 있지만 이에 대한 경험이 많지 않습니다.
다음은 Python에서 이를 수행하는 방법의 예입니다. 이 스크립트는 주어진 열의 셀을 살펴보고 숫자로 시작하지 않는 경우 파일에 값을 인쇄합니다.
엑셀 시트:
산출:
Here's the first string and the second now a third
암호:
from openpyxl import load_workbook # package for working with xls files
import re # regex package
workbookName = 'test.xlsx'
sheetName = 'Sheet1'
column = 'A'
maxRow = 50
outputFile = 'excelOutput.txt'
# Open the workbook
wb = load_workbook(workbookName)
# Create a file to put the data into
fh = open(outputFile, 'w')
# Loop through all the rows
for kk in range(1,maxRow):
# Grab the cell's value
cellValue = wb[sheetName][column+str(kk)].value
# If the cell isn't empty
if cellValue != None:
# If the cell doesn't start with a number
if not re.search("\\d",str(cellValue)[0]):
# Write the value from the cell into the text file
fh.write(cellValue)
# Close the file
fh.close()
답변3
범위에서 원하지 않는 행 삭제를 단순화하려면 먼저 정렬하여 f.ex. 모든 빈 행은 함께 그룹화됩니다. 내장된 셀 정렬을 사용하는 것은 다소 간단하지만 텍스트의 초기 순서를 유지하려면 몇 가지 추가 단계가 필요합니다.
A1:A200
예를 들어 귀하의 데이터가 범위 내에 있다고 언급하겠습니다 . 필요에 따라 실제 데이터에 맞게 조정하세요.
1
셀에 숫자를 삽입 하고 셀에B1
숫자를 삽입 합니다 . 셀을 선택 하고 , 함수 를 적용하여 열에 1~200이 되도록 합니다 . 나중에 이는 텍스트를 초기 순서대로 반환하는 데 도움이 됩니다.2
B2
B1:B200
fill
linear
B
범위를 선택
A1:B200
하고 정렬을 적용합니다. 이제 시간 프레임 행, 텍스트 행 및 빈 행뿐만 아니라 숫자 행도 함께 그룹화됩니다. 따라서 유지하지 않으려는 행을 쉽게 선택하고 제거할 수 있습니다. 원하지 않는 행을 삭제한 후에A1:B50
는 텍스트와 원래 행 번호를 열에 포함하는 범위가 있어야 합니다B
.텍스트의 올바른 순서를 복원하려면 범위를 선택
A1:B50
하고 열을 기준으로 정렬하세요B
.
추가 처리를 위해 텍스트를 복사하려면 Word
선택하여 복사하여 붙여넣습니다 Word
. 테이블 형식을 제거하고 행을 검색 및 바꾸기( paragraph
로 검색 및 바꾸기 space
)로 연결합니다.