ti-enxame.com

Como ler um arquivo de texto em uma variável de string?

Eu uso o seguinte segmento de código para ler um arquivo em python:

with open ("data.txt", "r") as myfile:
    data=myfile.readlines()

O arquivo de entrada é:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

e quando eu imprimir dados recebo

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Como vejo, os dados estão na forma list. Como eu faço string? E também como removo os caracteres "\n", "[" e "]"?

743
klijo

Você poderia usar:

with open('data.txt', 'r') as myfile:
    data=myfile.read().replace('\n', '')
1015
sleeplessnerd

use read (), não readline ()

with open('data.txt', 'r') as myfile:
  data = myfile.read()
540
xiaoyu

Você pode ler de um arquivo em uma linha:

str = open('very_Important.txt', 'r').read()

Por favor, note que isso não fecha o arquivo explicitamente.

CPython irá fechar o arquivo quando ele sair como parte da coleta de lixo.

Mas outras implementações em python não. Para escrever código portátil, é melhor usar with ou fechar o arquivo explicitamente. Curto nem sempre é melhor. Veja https://stackoverflow.com/a/7396043/362951

54
Nafis Ahmad

O caminho mais simples:

file = open('data.txt', 'r')
text = file.read().strip()
file.close()

Usando with (recomendado):

with open('data.txt', encoding='utf8') as f:
    text = f.read().strip()

Nota: não há necessidade de fechar o arquivo, with faz automagicamente .

39
Pedro Lobito
with open("data.txt") as myfile:
    data="".join(line.rstrip() for line in myfile)

join () irá unir-se a uma lista de strings, e rstrip () sem argumentos irá aparar espaços em branco, incluindo novas linhas, a partir do final das strings.

28
MagerValp

No Python 3.5 ou posterior, usando pathlib , você pode copiar o conteúdo do arquivo de texto em uma variável e fechar o arquivo em uma linha:

from pathlib import Path
txt = Path('data.txt').read_text()

e então você pode usar str.replace para remover as novas linhas:

txt = txt.replace('\n', '')
22
Jonathan Sudiaman

Eu brinquei com isso por um tempo e preferi usar o uso read em combinação com rstrip. Sem rstrip("\n"), o Python adiciona uma nova linha ao final da string, que na maioria dos casos não é muito útil.

with open("myfile.txt") as f:
    file_content = f.read().rstrip("\n")
    print file_content
8
whirlwin

Isso pode ser feito usando o método read ():

text_as_string = open('Your_Text_File.txt', 'r').read()

Ou como o modo padrão em si é 'r' (ler) então simplesmente use,

text_as_string = open('Your_Text_File.txt').read()
7
Loochie

É difícil dizer exatamente o que você procura, mas algo assim deve começar:

with open ("data.txt", "r") as myfile:
    data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
6
Chris Eberle

Esta é uma solução de uma linha, copiável para cópia que também fecha o objeto de arquivo:

_ = open('data.txt', 'r'); data = _.read(); _.close()
5
Edward D'Souza

Você também pode remover cada linha e concatenar em uma string final.

myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
    data = data + line.strip();

Isso também funcionaria bem.

4
Sai Kiriti Badam
f = open('data.txt','r')
string = ""
while 1:
    line = f.readline()
    if not line:break
    string += line

f.close()


print string
2
hungneox

você pode compactar isso em uma em duas linhas de código !!!

content = open('filepath','r').read().replace('\n',' ')
print(content)

se o seu arquivo diz:

hello how are you?
who are you?
blank blank

saída em python

hello how are you? who are you? blank blank
2
Michael Smith

python3: Google "compreensão da lista" se a sintaxe do colchete for novidade para você.

 with open('data.txt') as f:
     lines = [ line.strip( ) for line in list(f) ]
1
gerardw

Você já tentou isso?

x = "yourfilename.txt"
y = open(x, 'r').read()

print(y)
1
Thorax The PyChangeling

Não sinto que alguém tenha abordado a parte [] da sua pergunta. Quando você leu cada linha em sua variável, porque havia várias linhas antes de substituir o\n por '' você acabou criando uma lista. Se você tem uma variável de x e imprimi-lo apenas por

ou imprimir (x)

ou str (x)

Você verá a lista inteira com os colchetes. Se você chamar cada elemento da (variedade de tipos)

x [0] então omite os colchetes. Se você usar a função str (), verá apenas os dados e não o ''. Str (x [0])

1
John Galbraith

Estou surpreso que ninguém tenha mencionado splitlines() ainda.

with open ("data.txt", "r") as myfile:
    data = myfile.read().splitlines()

A variável data agora é uma lista assim quando impressa:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Note que não há novas linhas (\n).

Nesse ponto, parece que você quer imprimir as linhas para o console, o que você pode conseguir com um loop for:

for line in data:
    print line
1
Julian

Isso funciona: Altere seu arquivo para:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

Então:

file = open("file.txt")
line = file.read()
words = line.split()

Isso cria uma lista chamada words que é igual a:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Isso livrou-se do "\ n". Para responder à parte sobre os parênteses que estão atrapalhando, faça o seguinte:

for Word in words: # Assuming words is the list above
    print Word # Prints each Word in file on a different line

Ou:

print words[0] + ",", words[1] # Note that the "+" symbol indicates no spaces
#The comma not in parentheses indicates a space

Isso retorna:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
0
PyGuy
file = open("myfile.txt", "r")
lines = file.readlines()
str = ''                                     #string declaration

for i in range(len(lines)):
    str += lines[i].rstrip('\n') + ' '

print str
0
akD
with open(player_name, 'r') as myfile:
 data=myfile.readline()
 list=data.split(" ")
 Word=list[0]

Este código irá ajudá-lo a ler a primeira linha e, em seguida, usando a opção de lista e divisão, você pode converter a primeira linha do Word separado por espaço para ser armazenado em uma lista.

Do que você pode facilmente acessar qualquer Word, ou até mesmo armazená-lo em uma seqüência de caracteres.

Você também pode fazer a mesma coisa usando um loop for.

0
Lakshaya Maheshwari