2011-12-14 2 views
0

저는 파이썬을 배우기 때문에 txt 파일을 읽고 분석하는 데 몇 가지 문제가 있습니다. 파이썬에서 많은 라인을 포함하는 파일 .txt을 열고 싶습니다. 각 라인마다 하나의 과일과 가격이 있습니다.파이썬에서 txt 파일의 데이터를 사용합니다.

파이썬이 숫자로 가격을 인식하는 방법을 알고 싶습니다. (readlines()을 사용할 때 문자열로 인식하므로) 간단한 함수에서 숫자를 사용하여 최소 가격을 계산할 수 있습니다. 이익을 얻기 위해 과일을 팔아야한다.

어떻게해야할까요? 이름과 가격은 쉼표로 구분하는 경우

+1

입력 파일에 몇 가지 예제 라인을 줄 수 있습니까? 형식 지정이 매우 모호합니다. –

+0

그렇지 않습니다. 잘 이해할 수 있습니다. 텍스트 파일이 있습니다. 줄마다 두 개의 공백으로 구분 된 값 (문자열과 숫자)이 있습니다. 그는 파이썬이 두 번째 필드를 문자열 대신 숫자로 읽길 원합니다. –

+2

@ H2CO3 : 우주로 분리 된 것을 어떻게 알 수 있습니까? aix는 쉼표로 해석했다. 또한 Excel에서 내 보낸 CSV 파일 일 수도 있으므로 따옴표 등을 처리해야합니다. –

답변

1

: 당신의 값이 공백으로 구분되어 가정

with open('data.txt') as f: 
    for line in f: 
    name, price = line.rstrip().split(',') 
    price = float(price) 
    print name, price 
+0

잘 미안 나는 막연했다. 그러나 너는 정말로 나를 많이 도왔다. 고맙다 =) – Zomgosh

1

, 당신은 사용 튜플의 목록에 파일에서 읽을 수 있습니다

# generator to read file and return each line as a list of values 
pairs = (line.split() for line in open("x.txt")) 
# use list comprehension to produce a list of tuples 
fruits = [(name, float(price)) for name, price in pairs] 

print fruits 
# will print [('apples', 1.23), ('pears', 231.23), ('guava', 12.3)] 

float()은 두 번째 값 (price)을 str에서 부동 소수점 숫자로 변환하는 데 사용되었습니다.

참조 : list comprehensiongenerator expression.


당신은 DICT에 튜플의 목록을 변환 할 수 있습니다, 쉽게 각 과일의 가격을 조회 할 수 있도록 :

price_lookup = dict(fruits) 

print price_lookup["apples"] 
# will print 1.23 

print price_lookup["guava"] * 2 
# will print 24.6 

참조 : dict()합니다.

0

Perl에서 처음 파이썬을 배웠을 때도 같은 문제가있었습니다. Perl은 "당신이 의미하는 바를 할 것"(또는 적어도 당신이 생각하는 것)을하고 숫자처럼 보이는 것을 자동으로 숫자처럼 사용하려고 시도 할 것입니다. (나는 일반화하고 있지만 아이디어를 얻는다.) 파이썬 철학은 그렇게 많은 마법이 발생하지 않도록하기 때문에 명시 적으로 변환해야합니다. 문자열에서 변환하려면 float("12.00") 또는 int("123")을 호출하십시오.