Python 输出\n而不是生成新行

Python 输出\n而不是生成新行,python,python-3.x,Python,Python 3.x,我需要的程序读取两个文本文件的每一行,并把每一行放在一起。 它可以工作,但唯一的问题是它正在输出\n而不是生成新行 for name, pwd in dictionaries.items(): print('{}: {}'.format(name, pwd)) 代码: def user1(): file=open('password.txt') passwords=file.readlines() g=[] for i in passwords:

我需要的程序读取两个文本文件的每一行,并把每一行放在一起。 它可以工作,但唯一的问题是它正在输出\n而不是生成新行

for name, pwd in dictionaries.items():
    print('{}: {}'.format(name, pwd))
代码:

def user1():

    file=open('password.txt')
    passwords=file.readlines()
    g=[]
    for i in passwords:
        i.strip('\n')
        g.append(str(i))
    rfile=open('user.txt')
    users=rfile.readlines()
    r=[]
    for i in users:
        i.strip('\n')
        r.append(str(i))
    dictionaries=dict(zip(users,passwords))
    print(dictionaries)

user1()
因此,与其看起来像:

'ted123':'dd322'
'jnm443': 'dfvd3453'
看起来是这样的:

'ted123\n': 'dd322\n', 'jnm443\n': 'dfvd3453\n'

问题是,首先要剥离行,然后丢弃剥离的值。字符串是不可变的,这意味着它们不能更改

所以

没用。它应该分配给一个变量

i2 = i.strip('\n')
另外,您没有使用在
zip
函数调用中构建的列表,而是在压缩文件行。这些仍然有换行符

更改代码

def user1():

    file = open('password.txt')
    passwords = file.readlines()

    g=[]
    for i in passwords:
        g.append(i.strip('\n'))

    rfile = open('user.txt')
    users = rfile.readlines()

    r = []    
    for i in users:
        r.append(i.strip('\n'))

    dictionaries = dict(zip(g, r))
    print(dictionaries)

user1()
关键是,我们将剥离的字符串隐藏在列表中

r.append(i.strip('\n'))
也可以使用
zip中的列表

dictionaries = dict(zip(g, r))
你还应该注意你没有关闭你的文件。为此,请将
一起使用,而不是稍后手动调用close。作为一个例外,这更安全,因为中间代码意味着未调用close。作为一个例子

with open('password.txt') as file:
    passwords = file.readlines()
请注意,文件的生存期由
的作用域控制,该块中的任何代码都可以访问打开的文件。在街区结束后,它就关闭了

如果您希望将每个条目打印在单独的行上,请不要尝试依赖文件中已有的换行符。迭代
dict
并在新行上打印每个条目

for name, pwd in dictionaries.items():
    print('{}: {}'.format(name, pwd))
当然,您可以用更少的代码来表达这一点,而无需将行复制到中间列表

with open('user.txt') as fuser, open('password.txt') as fpass:

    def stripped(f):
        return map(str.strip, f)

    d = dict(zip(stripped(fuser), stripped(fpass)))

for name, pwd in d.items():
    print('{}: {}'.format(name, pwd))

i.strip('\n')
分配给新变量。字符串是不可变的。您不能在适当的位置更改它们。您能跳过反斜杠吗
\\n
?这样转换代码怎么样
i=i.strip('\n')
r.append(str(i.strip('\n'))
with open('user.txt') as fuser, open('password.txt') as fpass:

    def stripped(f):
        return map(str.strip, f)

    d = dict(zip(stripped(fuser), stripped(fpass)))

for name, pwd in d.items():
    print('{}: {}'.format(name, pwd))