Как прочитать текстовый файл в строковую переменную в Python
Я использую следующий фрагмент кода для чтения файла в Python
with open ("data.txt", "r") as myfile:
data=myfile.readlines()
входной файл
LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
и когда я печатаю данные, я получаю
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNNn', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
как я вижу данные в виде списка. Как мне сделать его струнным. А также Как удалить из него символы" n", " ["и"]"?
19 ответов
Вы можете прочитать из файла в одну строку:
str = open('very_Important.txt', 'r').read()
обратите внимание, что это не явно закрыть файл.
CPython закроет файл, когда он выйдет как часть сборки мусора.
но другие реализации python не будут. Чтобы написать портативный код, лучше использовать with
или закройте файл явно. Короткие не всегда лучше. См.https://stackoverflow.com/a/7396043/362951
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