Как прочитать текстовый файл в строковую переменную в Python

Я использую следующий фрагмент кода для чтения файла в Python

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

входной файл

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

и когда я печатаю данные, я получаю

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNNn', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

как я вижу данные в виде списка. Как мне сделать его струнным. А также Как удалить из него символы" n", " ["и"]"?

19 ответов


вы можете использовать:

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

используйте read (), а не readline ()

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

Вы можете прочитать из файла в одну строку:

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

обратите внимание, что это не явно закрыть файл.

CPython закроет файл, когда он выйдет как часть сборки мусора.

но другие реализации python не будут. Чтобы написать портативный код, лучше использовать with или закройте файл явно. Короткие не всегда лучше. См.https://stackoverflow.com/a/7396043/362951


самый простой способ:

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

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

join () присоединится к списку строк, а rstrip () без аргументов будет обрезать пробелы, включая новые строки, от конца строк.


в Python 3.5 или более поздней версии, используя pathlib вы можете скопировать содержимое файла в переменную и в одну строку:

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

я возился с этим некоторое время и предпочитаю использовать use read в сочетании с rstrip. Без rstrip("\n"), Python добавляет новую строку в конец строки, что в большинстве случаев не очень полезно.

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

трудно точно сказать, что вам нужно, но что-то вроде этого должно заставить вас начать:

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

Это одна строка, копируемое решение, которое также закрывает объект file:

_ = open('data.txt', 'r'); data = _.read(); _.close()

вы также можете очистить каждую строку и объединить ее в конечную строку.

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

Это также сработает просто отлично.


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

f.close()


print string

Я не чувствую, что кто-то обратился к [ ] части вашего вопроса. Когда вы читаете каждую строку в своей переменной, потому что было несколько строк, прежде чем вы заменили \n на " вы в конечном итоге создали список. Если у вас есть переменная x и распечатайте ее только по

x

или print (x)

или str (x)

вы увидите весь список в скобках. Если вы вызываете каждый элемент (массив сортов)

x[0] затем он опускает кронштейн. Если вы используете функцию str (), вы увидите только данные, а не "либо". str (x[0])


python3: Google "list comphrension", если синтаксис квадратной скобки является новым для вас.

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

Я удивлен, что никто не упомянул splitlines() еще.

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

переменная data теперь список, который выглядит так при печати:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

нет строк (\n).

в этот момент кажется, что вы хотите распечатать строки на консоли, что вы можете сделать с помощью цикла for:

for line in data:
    print line

вы можете сжать это в одну в две строки кода!!!

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

Если ваш файл читает:

hello how are you?
who are you?
blank blank

вывод python

hello how are you? who are you? blank blank

это работает: Измените файл на:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

затем:

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

это создает список с именем words что составляет:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

это избавилось от "\n". Чтобы ответить на часть о скобках, стоящих на вашем пути, просто сделайте следующее:

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

или:

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

возвращает:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

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

этот код поможет вам прочитать первую строку, а затем с помощью опции list и split вы можете преобразовать слово первой строки, разделенное пробелом, которое будет храниться в списке.

чем вы можете легко получить доступ к любому слову, или даже сохранить его в строку.

вы также можете сделать то же самое с помощью цикла for.


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

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

print str

вы пробовали это?

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

print(y)