Python 从.txt文件读取字符串时'\n';自动放置在字符串后面。我能把这个拿走吗?

Python 从.txt文件读取字符串时'\n';自动放置在字符串后面。我能把这个拿走吗?,python,Python,当我得到最终输出时,字符串的末尾添加了一个\n。有没有办法删除它,或者它只是readlines()函数的一部分?程序本身接收用户输入的字符串,将其保存到文件中,然后读取文件以显示输入的字符串。一切正常,我只是无法摆脱在最终答案中添加的额外字符 def readstring(f, line): string = line.strip('\r\n') return string def writestring(f, string): f.write('\n' + strin

当我得到最终输出时,字符串的末尾添加了一个
\n
。有没有办法删除它,或者它只是readlines()函数的一部分?程序本身接收用户输入的字符串,将其保存到文件中,然后读取文件以显示输入的字符串。一切正常,我只是无法摆脱在最终答案中添加的额外字符

def readstring(f, line):
    string = line.strip('\r\n')
    return string

def writestring(f, string):
    f.write('\n' + string)

num_lines1 = sum(1 for line in open('string.txt'))

with open("string.txt", "a+", encoding="utf-8") as f:
    cont = "Y"
    while cont.upper() == "Y":
        d = input("Enter input or, enter q to exit loop:")
        g = 0
        if d != "q":
            string = d
            writestring(f, string)
            h = g + 1
        else:
            print("saving.....")
            break

    f.seek(0)

    for line in f:
        print(readstring(f,line))

num_lines2 = sum(1 for line in open('string.txt'))

r = num_lines2 - num_lines1
print(r)

f.close()

with open("string.txt", "r",) as f:
    lines = f.readlines()[num_lines1:num_lines2]
    print(lines)

f.close()
对字符串使用
rstrip()
方法删除换行符

lines = [l.rstrip('\n') for l in f.readlines()[num_lines1:num_lines2]]

您可以在逐行阅读时删除结尾换行符,也可以调用rstrip删除“行”列表中每个项目的结尾换行符

字符串中保留一个尾随换行符

def readline(self, length=None):
    r"""
    A trailing newline character is kept in the string (but may be absent
    when a file ends with an incomplete line). ...
    """
    ...
    i = self.buf.find('\n', self.pos)
    ...

def readlines(self, sizehint = 0):
    ...
    line = self.readline()
    ...

您确实意识到,由
'\n'
分隔的字符串组成的文件被逐行读取为一组字符串,末尾是
'\n'
,对吗?请注意,您正在打印
,一个列表,而不是
中的每一行,它们都是字符串,所以你看到的是每一行的
repr
,而不是它的
str
@TigerhawkT3-你是对的。这就是为什么我删除了我的评论(在我读你的评论之前)。你能澄清一下你在说什么尾随的新行吗?如果你指的是打印列表的结果?就您的问题而言,您可能对正在查看的数据有误解,并且当前的答案都不合适。问题说有一个尾随的换行符,并询问如何删除它。这个答案表示有一个尾随的换行符,您可以删除它。感谢您的评论@Tigerhawkt3您可以用简单的
str.rstrip
替换
lambda x:x.rstrip()
,但更重要的是,结果将打印
,而不是Python 3中的有用内容,这可能就是这里使用的内容。谢谢@TigerhawkT3@TigerhawkT3我不理解引用文件readlines()的keepends。作为一个streamreader,我明白了。是否有一种简单/有效的方法将文件转换为StreamReader?谢谢大家。我想我可以用像l.rstrip这样的东西,我只是不确定是否还有更好的方法。再次感谢您的指导。
def readline(self, length=None):
    r"""
    A trailing newline character is kept in the string (but may be absent
    when a file ends with an incomplete line). ...
    """
    ...
    i = self.buf.find('\n', self.pos)
    ...

def readlines(self, sizehint = 0):
    ...
    line = self.readline()
    ...