相关疑难解决方法(0)

如何将打印输出或字符串格式化为固定宽度?

我有这个代码(在字符串中打印所有排列的出现)

def splitter(str):
    for i in range(1, len(str)):
        start = str[0:i]
        end = str[i:]
        yield (start, end)
        for split in splitter(end):
            result = [start]
            result.extend(split)
            yield result    

el =[];

string = "abcd"
for b in splitter("abcd"):
    el.extend(b);

unique =  sorted(set(el));

for prefix in unique:
    if prefix != "":
        print "value  " , prefix  , "- num of occurrences =   " , string.count(str(prefix));
Run Code Online (Sandbox Code Playgroud)

我想打印字符串变量中的所有排列事件.

因为排列不是相同的长度我想要修复宽度并打印出一个不喜欢这个的好处:

value   a - num of occurrences =    1
value   ab - num of occurrences =    1 …
Run Code Online (Sandbox Code Playgroud)

python format python-2.7

93
推荐指数
7
解决办法
21万
查看次数

如何在Python中使用空格将字符串填充到固定长度?

我敢肯定,这是覆盖在很多地方,但我不知道这个动作的准确名称,我想这样做,我真的不能看它.我一直在阅读官方的Python书30分钟,试图找出如何做到这一点.

问题:我需要在一定长度的"字段"中放置一个字符串.

例如,如果名称字段为15个字符长,我的名字叫约翰,我会得到"约翰",其次是11位创建15个字符的领域.

我需要这个用于为变量"name"输入的任何字符串.

我知道它可能是某种形式的格式化,但我找不到确切的方法来做到这一点.帮助将不胜感激.

python string format

43
推荐指数
4
解决办法
7万
查看次数

Python - 如何用右侧和左侧的空格填充字符串?

我有两个场景,我需要在左右两个方向(在不同的情况下)填充具有一定长度的空格的字符串.例如,我有字符串:

TEST
Run Code Online (Sandbox Code Playgroud)

但我需要使字符串变量

_____TEST1
Run Code Online (Sandbox Code Playgroud)

这样实际的字符串变量长度为10个字符(在这种情况下由5个空格引导). 注意:我正在显示下划线来表示空格(否则,降价在SO上看起来不正确).

我还需要弄清楚如何反转它并从另一个方向填充空白:

TEST2_____
Run Code Online (Sandbox Code Playgroud)

是否有任何字符串辅助函数来执行此操作?或者我需要创建一个字符数组来管理它?

还要注意,我正在尝试将字符串长度保持为变量(我在上面的示例中使用了10的长度,但我需要能够更改它).

任何帮助都是极好的.如果有任何python功能来管理这个,我宁愿避免从头开始写一些东西.

谢谢!

python string

41
推荐指数
2
解决办法
5万
查看次数

在python中按可变长度格式化

我想使用 .format() 方法打印一个类似楼梯的图案。我试过这个,

for i in range(6, 0, -1):
    print("{0:>"+str(i)+"}".format("#"))
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误:

ValueError: Single '}' encountered in format string
Run Code Online (Sandbox Code Playgroud)

基本上这个想法是打印

     #
    #
   #
  #
 #
#
Run Code Online (Sandbox Code Playgroud)

代码看起来类似于,

for i in range(6, 0, -1):
    print("{0:>i}".format("#"))
Run Code Online (Sandbox Code Playgroud)

python printing string format variables

10
推荐指数
2
解决办法
9789
查看次数

Python:打印成两列

我正在尝试打印带有两个固定列的字符串.例如,我希望能够打印:

abc       xyz
abcde     xyz
a         xyz
Run Code Online (Sandbox Code Playgroud)

打印时格式化输出字符串的正确方法是什么?另外,在2.6版之前和版本2.6之后如何完成?

python printing string multiple-columns

7
推荐指数
1
解决办法
2万
查看次数

如何使用样式设置文本格式

下面的代码:

info={'Resolution':'640x360', 'DisplayResolution': '640x360', 'Display Channels':'R,G,B,A'}
for key in info:
    print (key + str(info[key].rjust(45,'.')))
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

Resolution......................................640x360
DisplayResolution......................................640x360
Display Channels......................................R,G,B,A
Run Code Online (Sandbox Code Playgroud)

但我想得到:

Resolution.............................................640x360
DisplayResolution......................................640x360
Display Channels.......................................R,G,B,A
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

编辑:

感谢大家的宝贵意见.以下是根据您的建议汇总的代码摘要:

ROW_SIZE=0
for key, value in info.iteritems():
    if not key or not value: continue
    key=str(key)
    value=str(value)
    total=len(key)+len(value)+10
    if ROW_SIZE<total: ROW_SIZE=total

result=''
if ROW_SIZE:
    for key in info:
        result+=(key+str(info[key]).rjust(ROW_SIZE-len(key),'.'))+'\n'
print result
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
99
查看次数

Python 中的打印间距

是否可以在一行上打印多个字符串,使得最终字符串始终距左侧 x 个空格?例如,是否有办法打印与此类似的结果,其中 strZ 始终打印在同一位置(不是右对齐)?

strA strB strC        strZ 
strA                  strZ 
strC StrB strD strE   strZ
Run Code Online (Sandbox Code Playgroud)

python string-formatting

2
推荐指数
1
解决办法
7076
查看次数

通过python为字符串添加X零

我使用的是:

tmp=fileA.read(4)
outfile.write(tmp)
Run Code Online (Sandbox Code Playgroud)

但是如果fileA到达结尾并且只剩下2个字节就会出现问题.在那种情况下,tmp的内容将是

xx (Not XXXX any more)
Run Code Online (Sandbox Code Playgroud)

我想补偿丢失的x乘以0,所以它可能就像

xx00
Run Code Online (Sandbox Code Playgroud)

当我写入文件outfile

问题是,我知道我可以使用功能

len(tmp)
Run Code Online (Sandbox Code Playgroud)

要知道我需要添加多少0,有没有简单的方法来添加操作呢?

我能想到

if len(tmp) == 2 : tmp = tmp + "00"
elif len(tmp) == 3: .......
Run Code Online (Sandbox Code Playgroud)

但这是某种"愚蠢"的方法.

有没有办法做到这样:

tmp << (4-len(tmp)) | "0000"
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

python python-2.7

0
推荐指数
1
解决办法
101
查看次数

Python中字符串填充空间的效率和pythonicity

如何填写带空格的Python字符串?,在右边填充字符到字符串的接受答案是使用str.ljust().

但是如果我们想在左边填充字符到字符串,我们可以使用str.rjust()和填充我们可以使用的两个str.center(),例如

>>> s = 'foobar'
>>> s.ljust(len(s)+1) # pads one space to the right
'foobar '
>>> s.rjust(len(s)+1) # pads one space to the left
' foobar'
>>> s.center(len(s)+2) # pads one space to both left and right
' foobar '
Run Code Online (Sandbox Code Playgroud)

但是在后端,这真的比单纯这样做更有效吗?:

>>> ' ' + s + ' '
' foobar '
>>> ' '*10 + s + ' '*10 # pads ten spaces to both left and …
Run Code Online (Sandbox Code Playgroud)

python string performance padding justify

-5
推荐指数
1
解决办法
1036
查看次数