파이썬으로 정의 된 변수에서 파일 읽기

Pnelson

사용자가 Python에서 input파일 이름 (예 text.txt:)을 읽고 싶지만 파일 형식이 아닌 문자열로 읽습니다.

r=(input("insert the name of the file"))
  File= open(r,'r')
  data=File.read()
  data.split()
  print(data)
아담 스미스

새로운 뜨거움

편집 : 내 대답에 대한 의견에 따라 OP는 파일의 모든 단어에 대한 dict포함 을 빌드 {word:wordcount}하려고합니다 (공백으로 구분).

이 작업을 수행하는 정말 좋은 방법이 하나 있지만 실제로는 아무것도 가르쳐주지 않으므로 먼저 느린 방법을 보여주고 나중에 최적의 솔루션을 포함합니다.

wordcountdict = dict()

r = input("filename: ")
with open(r, 'r') as infile:
    for line in infile:
        for word in infile.split(): # split on whitespace
            try:
                wordcountdict[word.lower()] += 1
                # try adding one to the word in the counter
            except KeyError:
                wordcountdict[word.lower()] = 1
                # If the word isn't in the dict already, set it to 1

지금 당신은 몇 가지 일반적인 단어 (필터링 할 수 있습니다 "at", "I", "then"당신이 (같은 그들의 블랙리스트를 구축 할 수있는 경우 등) blacklist = ['at', 'i', 'then']) 및 수행 if word.lower() in blacklist: continue내부 for word in infile.split()와 전에 try/except블록을. 그것은 단어가 블랙리스트에 있는지 테스트하고, 그럴 경우 나머지 실행을 건너 뜁니다.

이제 저는이 작업을 수행 할 수있는 훌륭한 방법을 약속했습니다 collections.Counter. 목록의 요소를 계산하기 위해 특별히 만들어진 사전입니다. 단어를 계산하는 더 빠른 방법이 있지만 Python (imo)에서는 더 깨끗한 방법이 없습니다. 이 질문에 대한 타이밍을 확인합니다.

from collections import Counter

wordcountdict = Counter()
r = input("filename: ")
with open(r, 'r') as infile:
    for line in infile:
        wordcountdict += Counter( map(str.lower,line.split()) )

에서 가져 오기 collections또는 map함수를 사용한 적이 없다면 이것은 매우 신비한 일이 될 것이므로 먼저 넣지 않았습니다! :).

기본적으로 : collections.Counter이터 러블을 인수로 취하고 이터 러블의 모든 요소를 ​​계산합니다 (그래서`Counter ([1,1,2,3,4,4,4]) == {1 : 2, 2 : 1, 3 : 1, 4 : 3}). 추가 할 수 있으며 고유 한 곳에 새 키를 생성하고 그렇지 않은 곳에 값을 추가합니다.

map(callable, iterable)실행 callable반복자의 각 요소의 인수 및 반환을 가진 map객체 (그것의 listPython2에서) 자체 반복자를하다 (그래서 map(str.lower, ["ThIS", "Has", "UppEr", "aNd", "LOWERcase"])당신이 얻을 통해 반복 할 수있는지도 객체 제공 ["this","has","upper","and","lowercase"]하기 때문에 str.lower그것의 모든 호출되었다).

단어를 결합 할 때에서 각 개별 단어가 소문자로 collections.Countermap객체를 공급 line.split()다음 Counter누산기로 사용되는 처음에 비어 있는 객체에 추가합니다 . Capisce?

오래되고 파열

코드에 대한 문제가 무엇인지는 매우 불분명하므로 지식을 일부 버리고 무언가가 유지되기를 바랍니다.

r = input("insert the name of the file")
# this will be a string from the user, containing the file name, e.g.
# r == "text.txt"
# this is normal, because you pass `open` a filename, not a file object

File = open(r, "r")
# this makes File a file object that's pointed at the file name given from
# the user, opened for reading.

data = File.read()
# this sets data equal to the string containing the entire text in File
# This is usually NOT what you want to do, but without further explanation,
# I'll leave it be

data.split()
# this isn't an in-place operation, so you built a list out of the string
# data, split on newlines, then threw it away since you didn't assign it to
# anything.

print(data)
# prints your original data variable, because remember data.split() is not
# in-place, you'd have to do data = data.split(), but that's the wrong way
# to do that anyway....

당신이하고 싶은 일이 여기 있습니다 ...

filename = input("insert the name of the file: ")
with open(filename, "r") as infile:
    data = infile.readlines()

이는 더 나은 방법이기 때문에 with대신 컨텍스트 관리자 ( )를 사용 File = open(filename)합니다. 기본적으로 File.close()작업을 마친 후 입력하지 않아도 되며 파일 작업을하는 동안 문제가 발생할 수 있다는 사실을 설명하므로 어떤 이유로 든 코드에서 예외가 발생하고 GET이되지 않는 경우 당신에 File.close()가 떠나면, 그것은 여전히 파일 개체를 닫 with블록을.

문자 그대로 똑같은 .readlines()대신 대신 사용 합니다 .read().split(). 이것은 아마도 당신이하려는 일이 아닐 수도 있지만 (대부분의 경우 모든 데이터를 메모리에 덤프하는 대신 파일을 반복하기를 원합니다) 더 많은 컨텍스트가 없으면 더 이상 도움을 드릴 수 없습니다.

또한 Capitalizednames클래스가 있는 PEP8의 명명 규칙을 따릅니다 . File클래스가 아니고 파일 객체이므로 infile대신 이름을 지정했습니다 . 나는 주로 사용 in_하고 out파일 이름을하지만 YMMV.

파일로하려는 작업에 대해 주석을 달면 특정 코드를 작성할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

공백으로 구분 된 파일에서 정수 읽기

분류에서Dev

다른 파일에서 파이썬의 버튼으로 함수 읽기

분류에서Dev

파이썬에서 텍스트 파일의 문자열을 변수로 읽기

분류에서Dev

C에서 가변 개수의 열이있는 공간으로 구분 된 파일 읽기

분류에서Dev

이름이 변수에 저장된 파일의 내용 읽기

분류에서Dev

C #에서 수정 된 시간을 기준으로 파일 읽기

분류에서Dev

C #에서 수정 된 시간을 기준으로 파일 읽기

분류에서Dev

C ++ 지정된 범위의 파일에서 배열 읽기

분류에서Dev

파이썬에서 정적으로 파생 된 클래스 이름 얻기

분류에서Dev

C 프로그램의 파일에서 읽기 지정된 파일을 찾을 수 없음

분류에서Dev

파이썬으로 파일에서 데이터 읽기

분류에서Dev

파이썬 파일에서 쉼표로 구분 된 튜플 읽기

분류에서Dev

파이썬에서 형식화 된 파일 읽기

분류에서Dev

수정 된 날짜를 기반으로 jmeter에서 CSV 파일 이름을 변수로 설정

분류에서Dev

파이썬으로 json 파일에서 요소 읽기

분류에서Dev

bat 파일에서 파이썬으로 텍스트 읽기

분류에서Dev

파이썬의 문자열 객체에서 쉼표로 구분 된 값 읽기

분류에서Dev

파이썬에서 반복적으로 정의 된 변수를 반복적으로 호출하는 방법

분류에서Dev

지정된 프로젝트의 개정 태그에 대한 xml 파일 읽기

분류에서Dev

CSV에서 JSON으로의 파이썬-작성된 JSON 파일의 오류

분류에서Dev

AWK 읽기 파일, 특정 행의 여러 열에서 작동하고 변경이 수행 된 모든 파일 인쇄

분류에서Dev

파이썬의 초기 값으로 재정의되는 변수

분류에서Dev

초기 파일에 정의 된 매개 변수를 사용하여 별도의 파일에서 함수 호출

분류에서Dev

파이썬으로 디렉토리에서 읽은 파일의 순서 유지

분류에서Dev

파이썬에서 분할 된 목록을 어휘 적으로 정렬하기

분류에서Dev

암호화 된 파일에서 선언 된 문자열 변수로 읽기

분류에서Dev

텍스트 파일에서 정수를 읽고 정렬 된 배열에 넣기

분류에서Dev

파일 이름 지정 시스템에서 수정 수준을 기반으로 중복 된 PDF 파일 제거

분류에서Dev

파일에서 별도의 변수로 열 읽기

Related 관련 기사

  1. 1

    공백으로 구분 된 파일에서 정수 읽기

  2. 2

    다른 파일에서 파이썬의 버튼으로 함수 읽기

  3. 3

    파이썬에서 텍스트 파일의 문자열을 변수로 읽기

  4. 4

    C에서 가변 개수의 열이있는 공간으로 구분 된 파일 읽기

  5. 5

    이름이 변수에 저장된 파일의 내용 읽기

  6. 6

    C #에서 수정 된 시간을 기준으로 파일 읽기

  7. 7

    C #에서 수정 된 시간을 기준으로 파일 읽기

  8. 8

    C ++ 지정된 범위의 파일에서 배열 읽기

  9. 9

    파이썬에서 정적으로 파생 된 클래스 이름 얻기

  10. 10

    C 프로그램의 파일에서 읽기 지정된 파일을 찾을 수 없음

  11. 11

    파이썬으로 파일에서 데이터 읽기

  12. 12

    파이썬 파일에서 쉼표로 구분 된 튜플 읽기

  13. 13

    파이썬에서 형식화 된 파일 읽기

  14. 14

    수정 된 날짜를 기반으로 jmeter에서 CSV 파일 이름을 변수로 설정

  15. 15

    파이썬으로 json 파일에서 요소 읽기

  16. 16

    bat 파일에서 파이썬으로 텍스트 읽기

  17. 17

    파이썬의 문자열 객체에서 쉼표로 구분 된 값 읽기

  18. 18

    파이썬에서 반복적으로 정의 된 변수를 반복적으로 호출하는 방법

  19. 19

    지정된 프로젝트의 개정 태그에 대한 xml 파일 읽기

  20. 20

    CSV에서 JSON으로의 파이썬-작성된 JSON 파일의 오류

  21. 21

    AWK 읽기 파일, 특정 행의 여러 열에서 작동하고 변경이 수행 된 모든 파일 인쇄

  22. 22

    파이썬의 초기 값으로 재정의되는 변수

  23. 23

    초기 파일에 정의 된 매개 변수를 사용하여 별도의 파일에서 함수 호출

  24. 24

    파이썬으로 디렉토리에서 읽은 파일의 순서 유지

  25. 25

    파이썬에서 분할 된 목록을 어휘 적으로 정렬하기

  26. 26

    암호화 된 파일에서 선언 된 문자열 변수로 읽기

  27. 27

    텍스트 파일에서 정수를 읽고 정렬 된 배열에 넣기

  28. 28

    파일 이름 지정 시스템에서 수정 수준을 기반으로 중복 된 PDF 파일 제거

  29. 29

    파일에서 별도의 변수로 열 읽기

뜨겁다태그

보관