2011-07-05 4 views
1

저는 실제 사전 프로그래밍 지식 없이는 Python을 처음 접했습니다. 제 현재의 직업에서 저는 약 500 개 이상의 파일로부터 텍스트의 형태로 데이터를 가져 와서 그것을 출력하도록 요청 받았습니다. 어느 정도 플로팅을 이해하고 있지만 특정 섹션을 쉽게 선택할 수있는 방식으로 데이터를 조작하는 방법을 파악할 수 없습니다. 현재이 파일을 열기 위해 내가 무엇을 가지고 :데이터 조작 : 목록을 선택할 수 없음으로 인해 스테이밍

fp=open("file") 
for line in fp: 
    words = line.strip().split() 
    print words 

결과가 나에게 파일의 각 라인에 대한 목록을 제공하지만, 난 단지 만든 마지막 줄에 액세스 할 수 있습니다. 어느 누구도 나를 허용 할 수있는 방법을 알고 있습니까 다른 변형 목록을 선택 하시겠습니까? 고마워요 !!

with open('file', 'r') as f: 
    lines = f.readlines() 

지금 당신이 그 라인을 분할하거나 그들과 함께 원하는대로 수행 할 수 있습니다 :

lines = [line.split() for line in lines] 

나 '다음과 같이

답변

1

파일에서 라인의 목록을 얻을 수있는 가장 쉬운 방법은 귀하의 질문에 대한 답변이 확실하지 않습니다. 귀하가 더 구체적인 것을 염두에두면 알려주십시오. 난 당신이 무엇을 요구 정확히을 이해하지 않기 때문에


, 여기에 텍스트 파일을 처리하는 방법의 몇 가지 예입니다. 인터프리터 인터프리터에서 이것을 실험해볼 수 있습니다. 인터프리터 인터프리터는 일반적으로 명령 줄에 'python'을 입력하여 액세스 할 수 있습니다.

>>> with open('a_text_file.txt', 'r') as f: 
...  text = f.read() 
... 
>>> text 
'the first line of the text file\nthe second line -- broken by a symbol\nthe third line of the text file\nsome other data\n' 

원시 처리되지 않은 텍스트 파일입니다. 그것은 문자열입니다. 문자열은 변경할 수 없으며 변경할 수 없지만 일부 또는 전체를 복사 할 수 있습니다.

>>> text.splitlines() 
['the first line of the text file', 'the second line -- broken by a symbol', 'the third line of the text file', 'some other data'] 

splitlines은 문자열 방법입니다. splitlines\n (개행) 문자가있는 모든 위치에서 문자열을 나눕니다. 그런 다음 문자열의 개별 섹션 사본을 포함하는 목록을 반환합니다.

>>> lines = text.splitlines() 

이제 위의 행 목록을 새로운 변수 이름에 저장했습니다.

>>> lines[0] 
'the first line of the text file' 

목록에는 색인을 생성하여 액세스 할 수 있습니다. 0에서 len(lines) - 1까지 정수를 제공하면 해당 줄이 반환됩니다.

>>> lines[2] 
'the third line of the text file' 
>>> lines[1] 
'the second line -- broken by a symbol' 

이제 개별 선을 조작 할 수 있습니다.

>>> lines[1].split('--') 
['the second line ', ' broken by a symbol'] 

split은 다른 문자열 방법입니다. splitlines과 같지만 분리기로 사용할 문자 또는 문자열을 지정할 수 있습니다.

>>> lines[1][4] 
's' 

문자열의 문자를 색인화 할 수도 있습니다.

>>> lines[1][4:10] 
'second' 

문자열을 "분할"할 수도 있습니다. 결과는 4 - 9 자의 사본입니다. 10은 정지 값이므로 10 번째 문자는 슬라이스에 포함되지 않습니다. (당신은 너무 목록을 슬라이스 수 있습니다.)

>>> lines[1].index('broken') 
19 

당신이 문자열 내에서 문자열을 찾으려면 한 가지 방법은 index을 사용하는 것입니다. 하위 문자열이 처음 나타나는 인덱스를 반환합니다. (문자열은 문자열에없는 경우 오류가 발생합니다. 당신이이 -1 문자열이 문자열에없는 경우. 반환 find, 사용하지 않을 경우) 다음

>>> lines[1][19:] 
'broken by a symbol' 

을 그것을 사용하여 문자열을 조각 낼 수 있습니다. 중지 인덱스를 제공하지 않으면 문자열의 나머지 부분 만 반환합니다.

>>> lines[1][:19] 
'the second line -- ' 

시작 색인을 제공하지 않으면 문자열의 시작 부분을 반환하고 중지 색인에서 중지합니다.

>>> [line for line in text.splitlines() if 'line' in line] 
['the first line of the text file', 'the second line -- broken by a symbol', 'the third line of the text file'] 

또한 in을 사용할 수 있습니다 - 그것은 문자열이 문자열에있는 경우 True를 반환하는 부울 연산입니다. 이 경우에는 목록 내 용을 사용하여 'line' 행만 가져옵니다. (마지막 줄이 목록에서 누락되었습니다. 필터가 걸렸습니다.)

질문이 있으면 알려주십시오.

+0

그리고 나는 http://docs.python.org/tutorial/datastructures.html#more-on-lists을 읽을 것을 권합니다. – SteveMc

+0

이것은 많은 도움이됩니다! 그러나 라인의 일부만 선택하는 방법이 있습니까? –

+0

sooo 많은 감사합니다! 나는 upvote를 받아들이는 방법을 모르겠다. 그 웹 사이트는 계속 포인트를 가지고 있지 않다고 말하고있다. –

관련 문제