我有一个文本文件,如下所示:
ABCDEF
如何在没有换行符的情况下将文件读入单行字符串,在这种情况下创建字符串'ABCDEF'?
'ABCDEF'
要将文件读入列表行,但从每行中删除尾随换行符,请参阅如何读取没有换行符的文件?
f = open('data.txt','r')string = ""while 1:line = f.readline()if not line:breakstring += line f.close() print(string)
很难确切地说出你想要什么,但这样的事情应该让你开始:
with open ("data.txt", "r") as myfile:data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
with open("data.txt") as myfile:data="".join(line.rstrip() for line in myfile)
join()将加入一个字符串列表,没有参数的r地带()将从字符串末尾修剪空格,包括换行符。
您可以使用:
with open('data.txt', 'r') as file:data = file.read().replace('\n', '')
或者如果文件内容保证为单行
with open('data.txt', 'r') as file:data = file.read().rstrip()
我觉得没有人解决你问题的[]部分。当你将每一行读到你的变量中时,因为在你将\n替换为"之前有多行,你最终创建了一个列表。如果你有一个x的变量,并通过
x
或打印(x)
或str(x)
您将看到带有括号的整个列表。如果您调用(排序数组)的每个元素
x[0]然后省略括号。如果您使用str()函数,您将只看到数据而不是“要么”。str(x[0])
要将所有行连接到一个字符串并删除新行,我通常使用:
with open('t.txt') as f:s = " ".join([l.rstrip("\n") for l in f])
您还可以剥离每一行并连接成最终字符串。
myfile = open("data.txt","r")data = ""lines = myfile.readlines()for line in lines:data = data + line.strip();
这也会工作得很好。
这个工作:将您的文件更改为:
LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
然后:
file = open("file.txt")line = file.read()words = line.split()
这将创建一个名为words的列表,它等于:
words
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
这消除了“\n”。要回答括号挡住你的路的部分,只需这样做:
for word in words: # Assuming words is the list aboveprint 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
您可以在一行中从文件中读取:
str = open('very_Important.txt', 'r').read()
请注意,这不会显式关闭文件。
CPython将在文件作为垃圾回收机制的一部分退出时关闭该文件。
但其他python实现不会。要编写可移植代码,最好使用with或显式关闭文件。短并不总是更好。见https://stackoverflow.com/a/7396043/362951
with
with open(player_name, 'r') as myfile:data=myfile.readline()list=data.split(" ")word=list[0]
此代码将帮助您读取第一行,然后使用列表和拆分选项,您可以将第一行按空格分隔的单词转换为存储在列表中。
您可以轻松访问任何单词,甚至将其存储在字符串中。
您也可以使用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
python3:如果方括号语法对你来说是新的,谷歌“列表理解”。
with open('data.txt') as f:lines = [ line.strip('\n') for line in list(f) ]
我已经摆弄了一段时间,并且更喜欢将useread与rstrip结合使用。没有rstrip("\n"),Python会在字符串的末尾添加一个换行符,这在大多数情况下不是很有用。
read
rstrip
rstrip("\n")
with open("myfile.txt") as f:file_content = f.read().rstrip("\n")print(file_content)
你试过这个吗?
x = "yourfilename.txt"y = open(x, 'r').read() print(y)
我很惊讶没有人提到splitlines()。
splitlines()
with open ("data.txt", "r") as myfile:data = myfile.read().splitlines()
变量data现在是一个列表,打印时看起来像这样:
data
注意没有换行符(\n)。
\n
此时,听起来您想将行打印回控制台,您可以使用for循环实现:
for line in data:print(line)
在Python 3.5或更高版本中,使用Pathlib,您可以在一行中将文本文件内容复制到变量并关闭文件中:
from pathlib import Pathtxt = Path('data.txt').read_text()
然后您可以使用str.replace删除换行符:
txt = txt.replace('\n', '')
你可以把它压缩成两行代码!!!
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
这是一个单行、可复制粘贴的解决方案,它也关闭了file对象:
_ = open('data.txt', 'r'); data = _.read(); _.close()
这可以使用read()方法完成:
text_as_string = open('Your_Text_File.txt', 'r').read()
或者由于默认模式本身是'r'(读),因此只需使用,
text_as_string = open('Your_Text_File.txt').read()
也许你可以试试这个?我在我的程序中使用这个。
Data= open ('data.txt', 'r')data = Data.readlines()for i in range(len(data)):data[i] = data[i].strip()+ ' 'data = ''.join(data).strip()
正则表达式也可以:
import rewith open("depression.txt") as f:l = re.split(' ', re.sub('\n',' ', f.read()))[:-1] print (l)
['我','感觉','空','和','死','里面']
要使用Python删除换行符,您可以使用字符串的replace函数。
replace
此示例删除了所有3种类型的换行符:
my_string = open('lala.json').read()print(my_string) my_string = my_string.replace("\r","").replace("\n","")print(my_string)
示例文件是:
{"lala": "lulu","foo": "bar"}
你可以尝试使用这个重播场景:
https://repl.it/repls/AnnualJointHardware
尝试以下操作:
with open('data.txt', 'r') as myfile:data = myfile.read() sentences = data.split('\\n')for sentence in sentences:print(sentence)
注意:它不会删除\n。它只是用于查看文本,就好像没有\n一样
with open('data.txt', 'r') as file:data = [line.strip('\n') for line in file.readlines()]data = ''.join(data)
列表:"".join([line.rstrip('\n') for line in open('file.txt')])
"".join([line.rstrip('\n') for line in open('file.txt')])
生成器:"".join((line.rstrip('\n') for line in open('file.txt')))
"".join((line.rstrip('\n') for line in open('file.txt')))
列表比生成器快,但内存更重。生成器比列表慢,并且对于像迭代行这样的内存来说更轻。在""的情况下。加入(),我认为两者都应该工作得很好。.加入()函数应该被删除以分别获取列表或生成器。
line_lst = Path("to/the/file.txt").read_text().splitlines()
是获取文件所有行的最佳方式,'\n'已经被splitlines()剥离(它巧妙地识别win/mac/unix行类型)。
但如果你想删除每一行:
line_lst = [line.strip() for line in txt = Path("to/the/file.txt").read_text().splitlines()]
strip()只是一个有用的例子,但您可以随心所欲地处理您的行。
strip()
最后,您只需要连接文本?
txt = ''.join(Path("to/the/file.txt").read_text().splitlines())
尝试以下代码:
with open("my_text_file.txt", "r") as file:data = file.read().replace("\n", "")