我有一个文本文件存储像file = open("Class 3.txt", "r")
t4 = (file.read())
test =''.join(t4.split(':')[0:10])
print (test)
这样的数据,例如:
鲍勃:10 弗雷德:3
乔治:5
但是,我想这样说它
10:鲍勃
3:弗雷德
5:乔治
这样的代码是什么样的? 我是否需要首先删除冒号,因为我通过此代码管理了这个?
$.post("script.php", $("#form").serialize + '&arr=' + encodeURIComponent(JSON.stringify(arr)), function(response) {
...
});
我如何完成它并让它反过来?
答案 0 :(得分:1)
此代码处理小数分数(例如9.5
),并不关心:
分隔符周围是否有额外的空格。它应该比您当前的代码更容易维护。
Class 3.txt:
bob : 10
fred : 3
george : 5
<强>代码:强>
class_num = input('Which class (1, 2, or 3)? ')
score_sort = input('Sort by name or score? ').lower().startswith('s')
with open("Class " + class_num + ".txt", "r") as f:
scores = {name.strip():float(score) for
name,score in (line.strip().split(':') for line in f)}
if score_sort:
for name in sorted(scores, key=scores.get, reverse=True):
print(scores.get(name), ':', name)
else:
for name in sorted(scores):
print(name, ':', scores.get(name))
<强>输入:强>
3
scores
<强>输出:强>
10.0 : bob
5.0 : george
3.0 : fred
<强>输入:强>
3
name
<强>输出:强>
bob : 10.0
fred : 3.0
george : 5.0
答案 1 :(得分:0)
首先,整个文件一次比一次一行更难。
但是,不管怎样,你显然不能只是split(':')
,而是''.join(…)
。所有这一切都是用冒险替换冒号。你显然需要':'.join(…)
将冒号放回去。
同时,你必须在每个冒号的每一侧交换值。
所以,这里的函数只需一行,并交换边:
def swap_sides(line):
left, right = line.split(':')
return ':'.join((right, left))
但是你会注意到这里有一些问题。 left
在冒号之前有一个空格; right
在冒号后面有一个空格,在结尾处有一个换行符。你打算如何处理?
最简单的方法是只需strip
两侧的所有空格,然后添加回你想要的空白区域:
def swap_sides(line):
left, right = line.split(':')
return ':'.join((right.strip() + ' ', ' ' + left.strip())) + '\n'
但更聪明的想法是将结肠周围的空间视为分隔符的一部分。 (换行符,您仍然需要手动处理。)
def swap_sides(line):
left, right = line.strip().split(' : ')
return ' : '.join((right.strip(), left.strip())) + '\n'
但是如果你考虑一下,你真的需要重新添加换行符吗?如果您要将其传递给print
,答案显然是否定的。所以:
def swap_sides(line):
left, right = line.strip().split(' : ')
return ' : '.join((right.strip(), left.strip()))
无论如何,一旦你对这个功能感到满意,你只需编写一个循环,为每一行调用一次。例如:
with open("Class 3.txt", "r") as file:
for line in file:
swapped_line = swap_sides(line)
print(swapped_line)
答案 2 :(得分:0)
让我们学习如何反转一行:
line = `bob : 10`
line.partition(' : ') # ('10', ' : ', 'bob')
''.join(reversed(line.partition(' : ')) # 'bob : 10'
现在,结合文件中的阅读行:
for line in open('Class 3.txt').read().splitlines():
print ''.join(reversed(line.partition(' : '))
我正在重写代码来逐行读取文件:
with open('Class 3.txt') as input_file:
for line in input_file:
line = line.strip()
print ''.join(reversed(line.partition(' : ')))