Python 输出\n而不是生成新行
我需要的程序读取两个文本文件的每一行,并把每一行放在一起。 它可以工作,但唯一的问题是它正在输出\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:
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))