2016-11-05 2 views
0

파일의 한 줄에서 한 단어 만 가져 와서 일부 문자열 변수에 저장할 수 있습니까? 예를 들어, 내 파일에 "this, line, is, super"줄이 있고 변수 단어에 첫 번째 단어 ("this") 만 저장하려고합니다. 나는 문자를 문자로 읽으려고 했었습니다. ","하지만 "오류가 있습니다."인수 'int'는 반복 가능하지 않습니다. " 내가 어떻게 이걸 만들 수 있니?한 줄만 가져 오기

line = file.readline() # reading "this, line, is, super" 
    if "," in len(line): # checking, if it contains ',' 
     for i in line: 
      if "," not in line[i]: # while character is not ',' -> this is where I get error 
       word += line[i] # add it to my string 

답변

1

한 눈에 당신은 올바른 길을 걷고 있지만 어떤 데이터 유형이 어디에 저장되어 있는지 항상 고려한다면 해독 할 수있는 몇 가지 잘못된 점이 있습니다. 예를 들어 조건문 'if', 'in len (line)'은 의미가 없습니다. 왜냐하면 'if', 'in 21'로 변환되기 때문입니다. 두 번째로, 각 문자를 반복해서 반복하지만, 내가 생각하는 값은 당신이 생각하는 것이 아닙니다. 당신은 당신의 상상할 수 있듯이 for 루프의 그 시점에있는 문자의 인덱스를 원한다면 ","이 있는지 확인하고 line [i]는 line [0]과 같지 않습니다. ']. i가 항상 정수 또는 문자열의 인덱스라고 가정하는 것은 쉽지만 원하는 것은 정수 값의 범위입니다. 행의 길이와 같고, 반복하고, 각 인덱스에서 연관된 문자를 찾을 수 있습니다. 나는 당신이 의도 한대로 작동하도록 코드를 다시 포맷하고, 단어 = "this"를 반환하며, 이러한 설명을 염두에두고 있습니다. 이 수업을 찾으시기 바랍니다 (짧은 방법과 기본 제공 방법이 있지만 프로그래밍에있어 색인을 이해하는 것이 중요합니다). 줄을 "this, line, is, super"라고 가정합니다.

if "," in line: # checking that the string, not the number 21, has a comma 
    for i in range(0, len(line)): # for each character in the range 0 -> 21 
     if line[i] != ",": # e.g. if line[0] does not equal comma 
      word += line[i] # add character to your string 
     else: 
      break # break out of loop when encounter first comma, thus storing only first word 
+0

내 오류에 대해 설명해 주셔서 감사합니다. :) 그리고 내 생각에 솔루션을 조정 해 주셔서 감사드립니다. – Halep

2

당신은 split()를 사용하여, 이런 식으로 작업을 수행 할 수 있습니다 각 요소가 귀하의 경우, 단어에, 어디

line = file.readline() 
if "," in line: 
    split_line = line.split(",") 
    first_word = split_line[0] 
    print(first_word) 

split()는 목록을 작성합니다. 쉼표는 포함되지 않습니다.

+0

감사합니다. :) 당신의 솔루션은 매우 산뜻하고 아마도 당신의 생각을 미래에 사용할 것입니다. 확실한 두 가지 대답을 고르는 능력이 있다면 나는 또한 당신의 것을 고를 것입니다. 그러나 나는 하나를 고를 필요가 있었고, 바로이 경우에는 우아한 방법보다 귀중한 설명이 귀중했습니다. – Halep

관련 문제