如何将文本文件读入字符串变量并删除换行符?
- 2024-12-09 08:29:00
- admin 原创
- 154
问题描述:
我有一个如下所示的文本文件:
ABC
DEF
我怎样才能将文件读入没有换行符的单行字符串,在本例中创建一个字符串'ABCDEF'
?
要将文件读入行列表,但删除每行尾随的换行符,请参阅如何读取没有换行符的文件?
解决方案 1:
您可以使用:
with open('data.txt', 'r') as file:
data = file.read().replace('
', '')
或者如果保证文件内容只有一行:
with open('data.txt', 'r') as file:
data = file.read().rstrip()
解决方案 2:
在 Python 3.5 或更高版本中,使用pathlib您可以将文本文件内容复制到变量中并在一行中关闭该文件:
from pathlib import Path
txt = Path('data.txt').read_text()
然后您可以使用str.replace删除换行符:
txt = txt.replace('
', '')
解决方案 3:
您可以在一行中读取一个文件:
str = open('very_Important.txt', 'r').read()
请注意,这并没有明确关闭文件。
CPython在退出时会将该文件作为垃圾收集的一部分关闭。
但其他 Python 实现则不会。要编写可移植的代码,最好with
明确使用或关闭文件。简短并不总是更好。请参阅明确关闭文件是否重要?
解决方案 4:
要将所有行合并为一个字符串并删除新行,我通常使用:
with open('t.txt') as f:
s = " ".join([l.rstrip("
") for l in f])
解决方案 5:
使用:
with open("data.txt") as myfile:
data = "".join(line.rstrip() for line in myfile)
join()将连接一个字符串列表,而rstrip()如果不带任何参数则会从字符串末尾修剪空格,包括换行符。
解决方案 6:
还有splitlines():
with open ("data.txt", "r") as myfile:
data = myfile.read().splitlines()
变量data
现在是一个打印时如下所示的列表:
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
请注意,没有任何换行符 ( `
`)。
此时,听起来您想将这些行打印回到控制台,您可以使用 for 循环来实现:
for line in data:
print(line)
解决方案 7:
这可以使用read()方法完成:
text_as_string = open('Your_Text_File.txt', 'r').read()
或者由于默认模式本身是 'r' (读取),因此只需使用,
text_as_string = open('Your_Text_File.txt').read()
解决方案 8:
很难说清楚你到底想要什么,但是这样的事情应该可以帮助你开始:
with open ("data.txt", "r") as myfile:
data = ' '.join([line.replace('
', '') for line in myfile.readlines()])
解决方案 9:
我对此进行了一段时间的思考,并更喜欢将 useread
与 结合使用rstrip
。如果没有`rstrip("
")`,Python 会在字符串末尾添加一个换行符,这在大多数情况下不是很有用。
with open("myfile.txt") as f:
file_content = f.read().rstrip("
")
print(file_content)
解决方案 10:
这里有四个代码供您选择:
with open("my_text_file.txt", "r") as file:
data = file.read().replace("
", "")
或者
with open("my_text_file.txt", "r") as file:
data = "".join(file.read().split("
"))
或者
with open("my_text_file.txt", "r") as file:
data = "".join(file.read().splitlines())
或者
with open("my_text_file.txt", "r") as file:
data = "".join([line for line in file])
解决方案 11:
f = open('data.txt','r')
string = ""
while 1:
line = f.readline()
if not line:break
string += line
f.close()
print(string)
解决方案 12:
您还可以删除每一行并连接成最终的字符串。
myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
data = data + line.strip();
这也能起到很好的效果。
解决方案 13:
您可以将其压缩为两行代码!
content = open('filepath', 'r').read().replace('
', ' ')
print(content)
如果你的文件内容如下:
hello how are you?
who are you?
blank blank
Python 输出
hello how are you? who are you? blank blank
解决方案 14:
Python 3:请参阅列表推导以了解方括号语法。
with open('data.txt') as f:
lines = [ line.rstrip('
') for line in f ]
解决方案 15:
这是一行可复制粘贴的解决方案,它还可以关闭文件对象:
_ = open('data.txt', 'r'); data = _.read(); _.close()
解决方案 16:
一句话:
列表:`"".join([line.rstrip('
') for line in open('file.txt')])`发电机:`"".join((line.rstrip('
') for line in open('file.txt')))`
列表比生成器更快,但占用内存更大。生成器比列表慢,但占用内存更小,例如迭代行。对于“”join(),我认为两者都应该可以正常工作。应删除 .join() 函数以分别获取列表或生成器。
注意:可能不需要 close() / 关闭文件描述符
解决方案 17:
使用:
from pathlib import Path
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()
只是一个有用的例子,但您可以按照自己的想法处理您的线路。
最后,您只是想要连接的文本吗?
txt = ''.join(Path("to/the/file.txt").read_text().splitlines())
解决方案 18:
尝试一下:
x = "yourfilename.txt"
y = open(x, 'r').read()
print(y)
解决方案 19:
要使用 Python 删除换行符,您可以使用replace
字符串函数。
此示例删除所有 3 种类型的换行符:
my_string = open('lala.json').read()
print(my_string)
my_string = my_string.replace("
","").replace("
","")
print(my_string)
示例文件为:
{
"lala": "lulu",
"foo": "bar"
}
你可以尝试使用这个重播场景:
https://repl.it/repls/AnnualJointHardware
解决方案 20:
我觉得没有人回答你问题的 [ ] 部分。当你将每一行读入变量时,因为在将 \n 替换为 '' 之前有多行,所以你最终创建了一个列表。如果你有一个 x 变量,只需通过
十
或打印(x)
或 str(x)
您将看到带括号的整个列表。如果您调用(数组类型)中的每个元素
x[0] 则省略括号。如果使用 str() 函数,您将只看到数据,而不会看到 ''。str(x[0])
解决方案 21:
正则表达式也适用:
import re
with open("depression.txt") as f:
l = re.split(' ', re.sub('
',' ', f.read()))[:-1]
print (l)
输出:
['我', '感觉', '空虚', '并且', '死', '内心']
解决方案 22:
你可以试试这个。我在我的程序中使用了这个。
Data = open('data.txt', 'r')
data = Data.readlines()
for i in range(len(data)):
data[i] = data[i].strip() + ' '
data = ''.join(data).strip()
解决方案 23:
这有效:将您的文件更改为:
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
解决方案 24:
with open('data.txt', 'r') as file:
data = [line.strip('
') for line in file.readlines()]
data = ''.join(data)
解决方案 25:
file = open("myfile.txt", "r")
lines = file.readlines()
str = '' #string declaration
for i in range(len(lines)):
str += lines[i].rstrip('
') + ' '
print str
解决方案 26:
使用:
with open(player_name, 'r') as myfile:
data = myfile.readline()
list = data.split(" ")
word = list[0]
此代码将帮助您读取第一行,然后使用列表和拆分选项,您可以将第一行用空格分隔的单词转换为存储在列表中。
然后您可以轻松访问任何单词,甚至将其存储在字符串中。
您也可以使用for循环做同样的事情。
解决方案 27:
请尝试以下操作:
with open('data.txt', 'r') as myfile:
data = myfile.read()
sentences = data.split('\\n')
for sentence in sentences:
print(sentence)
警告:它不会删除`。它只是为了查看文本,就好像没有 一样
`。