두 개의 열이있는 간단한 텍스트 파일이 있습니다. 예 : 'J0005-28'14719.0 첫 번째 항목을 텍스트로, 두 번째 항목을 숫자로 읽고 싶으므로 name = 'J0005-28'및 value = 14719.0과 같은 변수를 설정할 수 있습니다.Python : 텍스트 파일의 혼합 데이터 읽기
Regex 또는 기타 복잡한 구문 분석 프로세스를 사용하지 않고 Python에서이 작업을 수행하는 간단한 방법이 있습니까?
두 개의 열이있는 간단한 텍스트 파일이 있습니다. 예 : 'J0005-28'14719.0 첫 번째 항목을 텍스트로, 두 번째 항목을 숫자로 읽고 싶으므로 name = 'J0005-28'및 value = 14719.0과 같은 변수를 설정할 수 있습니다.Python : 텍스트 파일의 혼합 데이터 읽기
Regex 또는 기타 복잡한 구문 분석 프로세스를 사용하지 않고 Python에서이 작업을 수행하는 간단한 방법이 있습니까?
이렇게하려면 파일의 줄 구조를 알아야합니다. 파일에서 분리 된 필드는 어떻게 분리합니까? 귀하의 예제에서 필드가 공백으로 구분되어 있다고 확신하는 경우 파이썬의 csv
모듈을 사용하고 구분 기호를 공백으로 설정하고 행을 구문 분석 할 수 있습니다.
샘플 코드 :
import csv
names = []
values = []
with open(input_file, 'r') as infile:
csv_reader = csv.reader(infile, delimiter=' ')
for line in csv_reader:
names.append(line[0])
values.append(line[1])
infile.close()
확실히 그래, 우선은 전체 라인을 읽은 후 별도로 데이터를 추출합니다. 예를 들어 :
f=open('abc.txt','r')
while 1:
a=f.readline()
if a=='': break
a=a.split() #This creates a list of the input
name=a[0]
value=int(a[1]) # or value=float(a[1]) whatever you want
#use the name and value howsoever
f.close()
오, 그래, warunsl에 의해 말하듯이, 공백이 구분 기호가 아닌 경우 a.split ('구분 기호가 무엇이든간에 ') example. a.split ('| ') – darkryder
실제로 고정 된 구분 기호가있을 것이라 확신하는 경우 csv를 사용하고 reader 함수의 구분 기호 플래그를 적절하게 설정할 수 있습니다 .csv 판독기는 구분 기호는 목록으로 채우고 목록으로 채 웁니다 . – shaktimaan
아, 글쎄요, 저는 초보자이기 때문에 저와 함께 감내해야합니다. 그러나 split()도 그렇게하지 않습니다 ... ?? – darkryder
1. 나는 탭 구분 기호를 사용하고 내가 사용하는 번호로 다시 두 번째 열 항목을 변환해야 2. 전화에서 설정 한 values.append (플로트 (라인 [1])). 그렇지 않으면 정상적으로 작동합니다. 거기에 genfromtxt 또는 loadtxt와 같은 단일 행 방법이있을 수 있다고 생각하고있었습니다. – dcnicholls