How to read a text file into a string variable and strip newlines?
我使用以下代码段读取python中的文件:
1 2 | with open ("data.txt","r") as myfile: data=myfile.readlines() |
输入文件为:
1 2 | LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE |
当我打印数据时,
1 2 | ['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN ', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE'] |
如我所见,数据以
"
你可以使用:
1 2 3 | with open('data.txt', 'r') as file: data = file.read().replace(' ', '') |
使用read(),而不是readline()。
1 2 | with open('data.txt', 'r') as myfile: data = myfile.read() |
您可以在一行中读取文件:
1 | str = open('very_Important.txt', 'r').read() |
请注意,这不会显式关闭文件。
当文件作为垃圾收集的一部分退出时,cpython将关闭该文件。
但其他的python实现不会。要编写可移植代码,最好使用
简单的方法:
1 2 3 | file = open('data.txt', 'r') text = file.read().strip() file.close() |
使用
1 2 | with open('data.txt', encoding='utf8') as f: text = f.read().strip() |
注:不需要关闭文件,
1 2 | with open("data.txt") as myfile: data="".join(line.rstrip() for line in myfile) |
join()将联接一个字符串列表,没有参数的rstrip()将从字符串末尾删除空格,包括换行符。
在python 3.5或更高版本中,使用pathlib可以将文本文件内容复制到变量中,并在一行中关闭该文件:
1 2 | from pathlib import Path txt = Path('data.txt').read_text() |
然后可以使用str.replace删除换行符:
1 2 | txt = txt.replace(' ', '') |
这可以使用read()方法完成:
1 | text_as_string = open('Your_Text_File.txt', 'r').read() |
或者由于默认模式本身是"r"(读取),所以只需使用,
1 | text_as_string = open('Your_Text_File.txt').read() |
我有一段时间一直在摆弄它,我更喜欢将
")
1 2 3 4 | with open("myfile.txt") as f: file_content = f.read().rstrip(" ") print file_content |
很难说清楚你在追求什么,但像这样的事情应该能让你开始:
1 2 3 | with open ("data.txt","r") as myfile: data = ' '.join([line.replace(' ', '') for line in myfile.readlines()]) |
这是一个单行的可复制粘贴解决方案,它还关闭文件对象:
1 | _ = open('data.txt', 'r'); data = _.read(); _.close() |
您还可以剥离每一行并连接到最后一个字符串中。
1 2 3 4 5 | myfile = open("data.txt","r") data ="" lines = myfile.readlines() for line in lines: data = data + line.strip(); |
这也可以解决问题。
我很惊讶还没有人提到
1 2 | with open ("data.txt","r") as myfile: data = myfile.read().splitlines() |
变量
1 | ['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE'] |
注意,没有新行(
此时,您似乎希望将行打印回控制台,这可以通过for循环实现:
1 2 | for line in data: print line |
1 2 3 4 5 6 7 8 9 10 11 | f = open('data.txt','r') string ="" while 1: line = f.readline() if not line:break string += line f.close() print string |
您可以将它压缩成一行代码!!!!
1 2 3 | content = open('filepath','r').read().replace(' ',' ') print(content) |
如果您的文件显示:
1 2 3 | hello how are you? who are you? blank blank |
Python输出
1 | hello how are you? who are you? blank blank |
你试过这个吗?
1 2 3 4 | x ="yourfilename.txt" y = open(x, 'r').read() print(y) |
我觉得没有人回答你问题的[]部分。当您将每一行读取到变量中时,因为在用""替换之前有多行,所以您最终创建了一个列表。如果你有一个x的变量,打印出来
X
或打印(X)
或STR(x)
您将看到带有括号的整个列表。如果调用(排序数组)的每个元素
X〔0〕然后省略括号。如果使用str()函数,您将只看到数据,而不会看到""。STR(X〔0〕)
python3:google"list comphrension",如果方括号语法对您来说是新的。
1 2 | with open('data.txt') as f: lines = [ line.strip( ) for line in list(f) ] |
1 2 3 4 | with open(player_name, 'r') as myfile: data=myfile.readline() list=data.split("") word=list[0] |
此代码将帮助您读取第一行,然后使用list和split选项,您可以将以空格分隔的第一行单词转换为存储在列表中的单词。
你可以很容易地访问任何单词,甚至把它存储在一个字符串中。
使用for循环也可以做同样的事情。
1 2 3 4 5 6 7 8 9 | file = open("myfile.txt","r") lines = file.readlines() str = '' #string declaration for i in range(len(lines)): str += lines[i].rstrip(' ') + ' ' print str |
这工作:将文件更改为:
1 | LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE |
然后:
1 2 3 | file = open("file.txt") line = file.read() words = line.split() |
这将创建一个名为
1 | ['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE'] |
把"n"去掉了。要回答有关括号妨碍您的部分,请执行以下操作:
1 2 | for word in words: # Assuming words is the list above print word # Prints each word in file on a different line |
或:
1 2 | print words[0] +",", words[1] # Note that the"+" symbol indicates no spaces #The comma not in parentheses indicates a space |
这种回报:
1 | LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE |