关于python:如何将文本文件读入字符串变量并去掉换行符?

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']

如我所见,数据以list形式存在。我怎么把它串起来?另外,如何从中删除"
"
"[""]"字符?


你可以使用:

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实现不会。要编写可移植代码,最好使用with或显式关闭文件。短并不总是好。请参阅https://stackoverflow.com/a/7396043/362951


简单的方法:

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

使用with(推荐):

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

注:不需要关闭文件,with自动关闭。


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()

我有一段时间一直在摆弄它,我更喜欢将readrstrip结合使用。如果没有rstrip("
")
,python会在字符串的末尾添加新行,这在大多数情况下并不十分有用。

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();

这也可以解决问题。


我很惊讶还没有人提到splitlines()

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

变量data现在是一个列表,打印时如下所示:

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()

这将创建一个名为words的列表,该列表等于:

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