如何将文本文件读入字符串变量并删除换行符?

2024-12-09 08:29:00
admin
原创
154
摘要:问题描述:我有一个如下所示的文本文件:ABC DEF 我怎样才能将文件读入没有换行符的单行字符串,在本例中创建一个字符串'ABCDEF'?要将文件读入行列表,但删除每行尾随的换行符,请参阅如何读取没有换行符的文件?解决方案 1:您可以使用:with open('data.txt', 'r') as file:...

问题描述:

我有一个如下所示的文本文件:

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)

警告:它不会删除`
。它只是为了查看文本,就好像没有 一样
`。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用