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

时间:2011-12-03 16:47:54

标签: python

我使用以下代码段来读取python中的文件:

with open ("data.txt", "r") as myfile:
    data=myfile.readlines()

输入文件是:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

当我打印数据时,我得到了

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

我看到数据是list形式。我如何使它成为字符串?还有如何从中删除"\n""[""]"个字符?

25 个答案:

答案 0 :(得分:1067)

您可以使用:

with open('data.txt', 'r') as file:
    data = file.read().replace('\n', '')

答案 1 :(得分:547)

使用read(),而不是readline()

with open('data.txt', 'r') as myfile:
  data = myfile.read()

答案 2 :(得分:57)

您可以从一行中读取文件:

str = open('very_Important.txt', 'r').read()

请注意,这不会明确关闭文件。

CPython将在文件作为垃圾收集的一部分退出时关闭该文件。

但是其他python实现不会。要编写可移植代码,最好使用with或明确关闭文件。简短并不总是更好。见https://stackoverflow.com/a/7396043/362951

答案 3 :(得分:41)

简单的方法:

file = open('data.txt', 'r')
text = file.read().strip()
file.close()

使用with(推荐):

with open('data.txt', encoding='utf8') as f:
    text = f.read().strip()

注意:with自动关闭文件

答案 4 :(得分:29)

with open("data.txt") as myfile:
    data="".join(line.rstrip() for line in myfile)

join()将连接一个字符串列表,而没有参数的rstrip()将从字符串末尾修剪空格,包括换行符。

答案 5 :(得分:24)

在Python 3.5或更高版本中,使用pathlib,您可以将文本文件内容复制到变量中并在一行中关闭文件

g++ main.cpp -o main -std=c++11 -DINFINITE_MATH -DSIGNED_ZERO_MATH && ./main

然后您可以使用str.replace删除换行符:

from pathlib import Path
txt = Path('data.txt').read_text()

答案 6 :(得分:11)

这可以使用read()方法完成:

text_as_string = open('Your_Text_File.txt', 'r').read()

或者因为默认模式本身是'r'(读取),所以只需使用

text_as_string = open('Your_Text_File.txt').read()

答案 7 :(得分:9)

我已经摆弄了一段时间,并且更倾向于将readrstrip结合使用。如果没有rstrip("\n"),Python会在字符串末尾添加换行符,这在大多数情况下都不是很有用。

with open("myfile.txt") as f:
    file_content = f.read().rstrip("\n")
    print file_content

答案 8 :(得分:6)

很难准确说出你的目标,但是这样的事情应该让你开始:

with open ("data.txt", "r") as myfile:
    data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])

答案 9 :(得分:5)

这是一个可复制粘贴的单行解决方案,它也关闭了文件对象:

_ = open('data.txt', 'r'); data = _.read(); _.close()

答案 10 :(得分:4)

您还可以删除每一行并连接成最终字符串。

myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
    data = data + line.strip();

这也很合适。

答案 11 :(得分:2)

您可以将其压缩为两行代码!!!

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

答案 12 :(得分:2)

f = open('data.txt','r')
string = ""
while 1:
    line = f.readline()
    if not line:break
    string += line

f.close()


print string

答案 13 :(得分:2)

我很惊讶没人提到splitlines()

with open ("data.txt", "r") as myfile:
    data = myfile.read().splitlines()

变量data现在是一个打印时看起来像这样的列表:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

请注意,没有新行(\n)。

此时,听起来您想要将线条打印回控制台,您可以通过for循环实现:

for line in data:
    print line

答案 14 :(得分:1)

python3:Google" list comphrension"如果方括号语法对你来说是新的。

 with open('data.txt') as f:
     lines = [ line.strip( ) for line in list(f) ]

答案 15 :(得分:1)

正则表达式也适用:

import re
with open("depression.txt") as f:
     l = re.split(' ', re.sub('\n',' ', f.read()))[:-1]

print (l)
  

['I','feel','empty','and','dead','inside']

答案 16 :(得分:1)

你试过这个吗?

x = "yourfilename.txt"
y = open(x, 'r').read()

print(y)

答案 17 :(得分:1)

我觉得没有人解决你问题的[]部分。当你在变量中读取每一行时,因为在用''替换\ n之前有多行,你最终创建了一个列表。如果你有一个x变量并且只用

打印出来

x

或print(x)

或str(x)

您将看到带括号的整个列表。如果你调用(排序数组)的每个元素

X [0] 然后它省略括号。如果使用str()函数,您将只看到数据,而不是''。 STR(X [0])

答案 18 :(得分:0)

file = open("myfile.txt", "r")
lines = file.readlines()
str = ''                                     #string declaration

for i in range(len(lines)):
    str += lines[i].rstrip('\n') + ' '

print str

答案 19 :(得分:0)

with open(player_name, 'r') as myfile:
 data=myfile.readline()
 list=data.split(" ")
 word=list[0]

此代码将帮助您阅读第一行,然后使用列表和拆分选项,您可以将由空格分隔的第一个单词转换为存储在列表中。

您可以轻松访问任何单词,甚至将其存储在字符串中。

使用for循环也可以做同样的事情。

答案 20 :(得分:0)

这有效: 将您的文件更改为:

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

答案 21 :(得分:0)

也许您可以尝试一下?我在程序中使用它。

Data= open ('data.txt', 'r')
data = Data.readlines()
for i in range(len(data)):
    data[i] = data[i].strip()+ ' '
data = ''.join(data).strip()

答案 22 :(得分:0)

要使用Python删除换行符,可以使用字符串的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

enter image description here

答案 23 :(得分:0)

with open('data.txt', 'r') as file:
    data = [line.strip('\n') for line in file.readlines()]
    data = ''.join(data)

答案 24 :(得分:-1)

请尝试以下操作:

with open('data.txt', 'r') as myfile:
    data = myfile.read()

    sentences = data.split('\\n')
    for sentence in sentences:
        print(sentence)

警告:它不会删除\n。它仅用于查看文本,就好像没有\n