【问题标题】:Unnecessary new lines to the output string, Python, How to get rid of these line breaks?输出字符串不必要的新行,Python,如何摆脱这些换行符?
【发布时间】:2017-03-20 06:03:14
【问题描述】:

我有一个包含以下内容的 user.txt:

user1:M0024132132

user2:M00123132

user3:M001234123

user4:123123

我写了一个python代码来执行一个基本的字符串连接操作

filename='user.txt'
separator=":"
fileIN = open(filename, "r")
line = fileIN.readline()

while line:
    sout=line.split(separator)
   user=sout[0]
   passwd=sout[1]
   print ('create:' + str(user) + ':' + str(passwd) + ':::' + str(user) + ':/home/' + str(user) + ':/bin/bash:::::' )
    line = fileIN.readline()

预期输出:

create:user:M00123132:::user:/home/user:/bin/bash::::: 创建:user1:M00123132:::user1:/home/user1:/bin/bash::::: 创建:useruser1:M00212312:::useruser1:/home/useruser1:/bin/bash::::: 创建:sdfsdf:12312:::sdfsdf:/home/sdfsdf:/bin/bash:::::

但我得到的输出是:

创建:用户:M00123132

:::user:/home/user:/bin/bash:::::

创建:user1:M00123132

:::user1:/home/user1:/bin/bash:::::

创建:useruser1:M00212312

:::useruser1:/home/useruser1:/bin/bash:::::

请帮我解决这个问题。

【问题讨论】:

  • Readline 总是在行尾保留 '\n',除了最后一行,只需用 rstrip() 或其他方法将其删除。

标签: python string python-3.x concatenation


【解决方案1】:

您需要剥离该行以摆脱新行。 readline API 读取新行。这个新行后来最终成为 passwd 变量的一部分。

while line:
    line = line.strip()

来自 Python 文档:https://docs.python.org/2/tutorial/inputoutput.html

f.readline() 从文件中读取一行;换行符 (\n) 留在字符串的末尾,仅在最后一个省略 如果文件不以换行符结尾,则为文件的行。

【讨论】:

    【解决方案2】:

    在 Python 3 中,您可以使用 end 关键字参数来禁止换行:

    print ('create:' + str(user) + ':' + str(passwd) + ':::' + str(user) 
           + ':/home/' + str(user) + ':/bin/bash:::::', end="")
    

    顺便说一句,你可以简单地使用:

    user, passwd = line.split(separator)
    

    而不是使用中间列表变量(即sout)。

    【讨论】:

    • 我相信,在解析文本文件中的数据时,它会在 passwd 变量的每个字母末尾添加一个换行符。有什么办法可以避免这种情况?
    • 您可以尝试使用passwd.strip() 看看它是否对您有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2012-11-19
    • 2023-04-03
    相关资源
    最近更新 更多