代码:
with open("data.txt", "r") as f:
data = f.readlines()
输入文件:
ABC
DEF
但是,data
包含结尾的 \n
:
data == ['ABC\n', 'DEF']
如何得到:
data == 'ABCDEF'
你可以使用:
with open('data.txt', 'r') as file:
data = file.read().replace('\n', '')
或者如果文件内容保证为一行
with open('data.txt', 'r') as file:
data = file.read().rstrip()
在 Python 3.5 或更高版本中,您可以使用 pathlib 将文本文件内容复制到变量中并在一行中关闭文件:
from pathlib import Path
txt = Path('data.txt').read_text()
然后您可以使用 str.replace 删除换行符:
txt = txt.replace('\n', '')
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 148: character maps to <undefined>
。而且据我搜索,似乎我无法将编码设置为 pathlib,因此我必须使用 os 模块传统地读取内容。
read_text(encoding=None, errors=None)
。你应该能够在那里传递编码?
您可以在一行中读取文件:
str = open('very_Important.txt', 'r').read()
请注意,这不会显式关闭文件。
当文件作为垃圾回收的一部分退出时,CPython 将关闭文件。
但其他 python 实现不会。要编写可移植代码,最好使用 with
或显式关闭文件。短并不总是更好。请参阅https://stackoverflow.com/a/7396043/362951
open
应在 with ... as
语句中使用。
with ... as
声明带来了什么?
str()
要将所有行加入字符串并删除新行,我通常使用:
with open('t.txt') as f:
s = " ".join([l.rstrip("\n") for l in f])
s = " ".join([l.replace("\n", "") for l in f])
rstrip
还支持指定要删除的章程,感谢您的提示。
rstrip()
也有一个论点。因此,您的代码可能更快且可操作,除了一些非常奇怪的情况,其中 one 行将包含尾随 " "
和 "\n"
的混合,例如 "funny line \n \n "
with open("data.txt") as myfile:
data="".join(line.rstrip() for line in myfile)
join() 将加入字符串列表,不带参数的 rstrip() 将从字符串末尾修剪空白,包括换行符。
这可以使用 read() 方法完成:
text_as_string = open('Your_Text_File.txt', 'r').read()
或者因为默认模式本身是'r'(读取)所以简单地使用,
text_as_string = open('Your_Text_File.txt').read()
我很惊讶还没有人提到 splitlines()
。
with open ("data.txt", "r") as myfile:
data = myfile.read().splitlines()
变量 data
现在是一个列表,打印时如下所示:
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
请注意,没有换行符 (\n
)。
那时,听起来您想将这些行打印回控制台,您可以使用 for 循环来实现:
for line in data:
print(line)
我已经摆弄了一段时间,并且更喜欢将 read
与 rstrip
结合使用。如果没有 rstrip("\n")
,Python 会在字符串末尾添加一个换行符,这在大多数情况下并不是很有用。
with open("myfile.txt") as f:
file_content = f.read().rstrip("\n")
print(file_content)
很难确切地说出你在追求什么,但这样的事情应该让你开始:
with open ("data.txt", "r") as myfile:
data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
data = ' '.join(line.replace('\n', '') for line in myfile)
或 MagerValp 的版本。
尝试这个:
with open("my_text_file.txt", "r") as file:
data = file.read().replace("\n", "")
你可以把它压缩成一成两行的代码!!!
content = open('filepath','r').read().replace('\n',' ')
print(content)
如果您的文件内容为:
hello how are you?
who are you?
blank blank
蟒蛇输出
hello how are you? who are you? blank blank
with
语句。所以像with open("filepath", "r") as fin: content = fin.read().replace("\n", " ")
这样的东西但是如果当然它不确定原始海报是否需要它
这是一个单行的、可复制粘贴的解决方案,它也关闭了文件对象:
_ = open('data.txt', 'r'); data = _.read(); _.close()
您还可以剥离每一行并连接成最终字符串。
myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
data = data + line.strip();
这也可以解决问题。
data = data + line.strip();
可以简化为 data += line.strip();
python3:如果方括号语法对您来说是新的,请谷歌“列表理解”。
with open('data.txt') as f:
lines = [ line.strip('\n') for line in list(f) ]
lines = list(map(str.strip, f))
?
单线:
列表:"".join([line.rstrip('\n') for line in open('file.txt')])
生成器:"".join((line.rstrip('\n') for line in open('file.txt')))
List 比生成器快,但在内存上更重。生成器比列表慢,并且对于内存(例如遍历行)更轻。在 "".join() 的情况下,我认为两者都应该工作得很好。应删除 .join() 函数以分别获取列表或生成器。
注意:可能不需要关闭()/关闭文件描述符
你试过这个吗?
x = "yourfilename.txt"
y = open(x, 'r').read()
print(y)
要使用 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
https://i.stack.imgur.com/cmmzY.png
f = open('data.txt','r')
string = ""
while 1:
line = f.readline()
if not line:break
string += line
f.close()
print(string)
string += line
的循环。某些版本的 Python 可能会设法避免此处的 O(n^2) 行为,但已给出的任何其他答案都比这更好。此外,您没有删除请求的换行符,因此您的代码只是一种非常缓慢的string = f.read()
方式
print(repr(string))
我认为没有人解决您问题的 [ ] 部分。当您将每一行读入变量时,因为在将 \n 替换为 '' 之前有多行,您最终会创建一个列表。如果你有一个变量 x 并打印出来只是
X
或打印(x)
或 str(x)
您将看到带有括号的整个列表。如果您调用(排序数组)的每个元素
x[0] 然后省略括号。如果您使用 str() 函数,您将只看到数据而不是 '' 。 str(x[0])
也许你可以试试这个?我在我的程序中使用它。
Data= open ('data.txt', 'r')
data = Data.readlines()
for i in range(len(data)):
data[i] = data[i].strip()+ ' '
data = ''.join(data).strip()
正则表达式也可以:
import re
with open("depression.txt") as f:
l = re.split(' ', re.sub('\n',' ', f.read()))[:-1]
print (l)
['我','感觉','空','和','死','里面']
with open('data.txt', 'r') as file:
data = [line.strip('\n') for line in file.readlines()]
data = ''.join(data)
这有效:将您的文件更改为:
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
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
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())
尝试以下操作:
with open('data.txt', 'r') as myfile:
data = myfile.read()
sentences = data.split('\\n')
for sentence in sentences:
print(sentence)
注意:它不会删除 \n
。仅用于查看文本,就好像没有 \n
不定期副业成功案例分享
open("data.txt").read().replace('\n','')
有缺点吗?rstrip('\n')
只会从最后一行删除换行符,replace('\n','')
会在任何地方删除它(基本上使整个文件变成一行)