右对齐不工作[Python]

2024-05-29 11:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写代码,让用户输入企业名称并打印出评论。当我运行我的最后一个循环时,我告诉python用四个空格对评审进行右对齐,但是什么都没有发生。我尝试过多种解决方案,但我真的不知所措。在

(问题区域是最后一行)

import json
import textwrap
import sys
f = open('reviews.json')
f1= open('businesses.json')
line1= f1.readline()
business= json.loads(line1)
line = f.readline()
review = json.loads(line)
idlist=[]
reviewlist=[]
bizname= raw_input('Enter a business name => ')
print bizname

for line in f1:
    business= json.loads(line)
    if bizname == business['name']:
        idlist.append(business['business_id'])

if len(idlist)==0:
    print 'This business is not found'
    sys.exit()

for line in f:
    review = json.loads(line)
    for item in idlist:
        if item == review['business_id']:
            reviewlist.append(review['text'])
if len(reviewlist)==0:
    print 'No reviews for this business are found'
    sys.exit()
for i in range(len(reviewlist)):
    w = textwrap.TextWrapper(replace_whitespace=False)
    print 'Review',str(i+1)+':'
    print w.fill(reviewlist[i] , ).rjust(4,' ') 

Tags: inimportjsonforifsyslinebusiness
3条回答

“右对齐4个空格”没有意义,所以不清楚你真正想要什么。.rjust()的第一个参数是字段的宽度,如果字符串已经足够长,则根本不执行任何操作。一些例子:

>>> "abcde".rjust(4, " ") # nothing done: 5 > 4
'abcde'
>>> "abcd".rjust(4, " ") # nothing done: 4 == 4
'abcd'
>>> "abc".rjust(4, " ") # extends to 4 with 1 blank on left
' abc'
>>> "ab".rjust(4, " ") # extends to 4 with 2 blanks on left
'  ab'
>>> "a".rjust(4, " ") # extends to 4 with 3 blanks on left
'   a'
>>> "".rjust(4, " ") #  # extends to 4 with 4 blanks
'    '

假设您确实想缩进文本,那么可以使用TextWrapper对象来实现:

indent = ' ' * 4
w = textwrap.TextWrapper(replace_whitespace=False, initial_indent=indent, subsequent_indent=indent)

演示

^{pr2}$

请注意,行宽度中包含了缩进,因此您可能需要相应地调整宽度:

>>> w = textwrap.TextWrapper(width=20+len(indent), replace_whitespace=False, initial_indent=indent, subsequent_indent=indent)
>>> print(w.fill('A longish paragraph to demonstrate indentation with TextWrapper objects.'))
    A longish paragraph
    to demonstrate
    indentation with
    TextWrapper objects.

我建议您验证输出print w.fill(reviewlist[i] , )。在

长度可以小于4。所以看起来好像没用。e、 g.'abcdef'.rjust(4, ' ')

>>> 'abcdef'.rjust(4, ' ')
'abcdef'
>>> 'abcdef'.rjust(20, ' ')
'              abcdef'

https://docs.python.org/2/library/string.html#string.rjust

相关问题 更多 >

    热门问题