网站后台内容编辑器,wordpress 模板教程,网站开发如何适应手机现实要求,南昌市网站建设推广我正在处理一个包含坐标x、y、z的文本文件
1
2
31 128 1298039
123388 0 2
....
每一行使用
1words line.split()
处理完数据后#xff0c;我需要将坐标写回另一个txt文件中#xff0c;以便每列中的项都右对齐(以及输入文件)。每一行都由坐标组成
1line_new words[0] line.split()
处理完数据后我需要将坐标写回另一个txt文件中以便每列中的项都右对齐(以及输入文件)。每一行都由坐标组成
1line_new words[0] words[1] words[2].
在C中是否有任何类似EDCOX1、0等的机械手允许设置宽度和对齐方式
变量words和word之间的关系是什么
马克打字错误已经解决了…
使用更新的str.format语法尝试此方法
1line_new {:12} {:12} {:12}.format(word[0], word[1], word[2])
下面介绍如何使用旧的%语法(对于不支持str.format的旧版本python很有用)
1line_new %12s %12s %12s % (word[0], word[1], word[2])
注意旧语法是如何更清晰、更容易阅读和更短的。
我想我应该添加一个比提供的更直接的链接docs.python.org/2/library/hellip
当然越短我不知道清洁剂的真正含义但我认为更容易阅读只是因为它很熟悉。如果您还不熟悉其中一种格式那么新格式似乎更易于阅读。.format对于字符串格式来说显然比百分比/模块更直观。右箭头的右对齐似乎也相当直观。
如果您使用的是python 2并且用非拉丁符号标记行请使用unicode(u....format)
在python 2中如何使用%
标记一种方法旧方法更干净的方法是使用更少的字符。是的熟悉后新的方法会变得直观但并不干净和简单。对于那些习惯了通过可敬的C语言(一种典型的简洁和精确的语言)进入我们的语法的人来说旧方法更直观。新方法有什么先例
StephenBoston所以你是说有一种方法可以让python和c一样可读这确实是一个普遍的原因。
Mark Ha好点。我笑了。但是如果我可以借鉴您关于熟悉性的观点经验丰富的C程序员会发现C比乍一看Perl更容易阅读所以…之后即使我能读到新的方法我还是更喜欢旧的方法。我发现新的方法神秘而冗长更喜欢新的格式函数。
您可以这样对齐它
1print({:8} {:8} {:8}.format(*words))
其中表示右对齐8表示特定值的宽度。
这里有一个证据
1
2
3
4
5
6 for line in [[1, 128, 1298039], [123388, 0, 2]]:
print({:8} {:8} {:8}.format(*line))
1 128 1298039
123388 0 2
ps.*line表示将解包line列表因此.format(*line)的工作方式与.format(line[0], line[1], line[2])类似(假设line是一个只有三个元素的列表)。
可以通过使用rjust来实现
1line_new word[0].rjust(10) word[1].rjust(10) word[2].rjust(10)
我只是想知道为什么这个答案没有多少赞成票。只有它没有这么难看的语法。
我真的很喜欢Python3.6中的一个新的文字字符串插值
1line_new f{word[0]:12} {word[1]:12} {word[2]:12}
参考PEP 498——文字字符串插值
输出的简单表格
1
2
3
4a 0.3333333
b 200/3
print(variable a variable b)
print(%10.2f %10.2f % (a, b))
输出
1
2variable a variable b
0.33 66.67
%10.2f:10为最小长度2为小数位数。
以下是使用f-string格式的另一种方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25print(
f{Trades::15}{cnt:10},
f
{Wins::15}{wins:10},
f
{Losses::15}{losses:10},
f
{Breakeven::15}{evens:10},
f
{Win/Loss Ratio::15}{win_r:10},
f
{Mean Win::15}{mean_w:10},
f
{Mean Loss::15}{mean_l:10},
f
{Mean::15}{mean_trd:10},
f
{Std Dev::15}{sd:10},
f
{Max Loss::15}{max_l:10},
f
{Max Win::15}{max_w:10},
f
{Sharpe Ratio::15}{sharpe_r:10},
)
这将提供以下输出
1
2
3
4
5
6
7
8
9
10
11
12Trades: 2304
Wins: 1232
Losses: 1035
Breakeven: 37
Win/Loss Ratio: 1.19
Mean Win: 0.381
Mean Loss: -0.395
Mean: 0.026
Std Dev: 0.56
Max Loss: -3.406
Max Win: 4.09
Sharpe Ratio: 0.7395
您在这里所做的是说第一列的长度为15个字符左对齐第二列(值)的长度为10个字符右对齐。