Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在空间序列上迭代?_Python_Text_Loops_Justify - Fatal编程技术网

Python 如何在空间序列上迭代?

Python 如何在空间序列上迭代?,python,text,loops,justify,Python,Text,Loops,Justify,好的,我正在尝试获取一个输入文本文件,并像MicrosoftWord或任何其他文字处理器一样对其进行验证。在最后一行,我已经得到了要进行字符对齐的文本。我试图找出如何迭代最后一行中的每个空格,并插入一个',以使最后一行达到指定的长度 如果我尝试: for ' ' in new: insert(new,' ',find(' ')) 本着python教给我的简单风格, 我犯了一个不可原谅的错误。因此,在代码循环中存在while。但这只会在第一个空格处插入所有空格 还有没有一种方法可以让这个

好的,我正在尝试获取一个输入文本文件,并像MicrosoftWord或任何其他文字处理器一样对其进行验证。在最后一行,我已经得到了要进行字符对齐的文本。我试图找出如何迭代最后一行中的每个空格,并插入一个
'
,以使最后一行达到指定的长度

如果我尝试:

for ' ' in new:
    insert(new,' ',find(' '))
本着python教给我的简单风格, 我犯了一个不可原谅的错误。因此,在代码循环中存在while。但这只会在第一个空格处插入所有空格

还有没有一种方法可以让这个程序通过文字而不是字符来证明其正确性

我使用“Lorem ipsum…”段落作为默认文本

感谢您的帮助

完整代码:

inf = open('filein.txt', 'r')
of = open('fileout.txt', 'w')

inf.tell()

n = input('enter the number of characters per line: ')

def insert(original, new, pos):
  #Inserts new inside original at pos.
  return original[:pos] + new + original[pos:] 

try:
    print 'you entered {}\n'.format(int(n))
except:
    print 'there was an error'
    n = input('enter the number of characters per line: ')
else:
    new = inf.readline(n)
    def printn(l):

        print>>of, l+'\n'
        print 'printing to file',
        print '(first char: {} || last char: {})'.format(l[0],l[-1])

    while new != '': #multiple spaces present at EOF
        if new[0] != ' ': #check space at beginning of line
            if new[-1] != ' ': # check space at end of line
                while (len(new) < n):
                    new = insert(new,' ',(new.find(' ')))
                printn(new)

        elif new[0] == ' ':
            new = new.lstrip() #remove leading whitespace
            new = insert(new,' ',(new.find(' ')))
            while (len(new) < n):
                new = insert(new,' ',(new.find(' ')))
            printn(new)

        elif new[-1] == ' ':
            new = new.rstrip() #remove trailing whitespace
            new = insert(new, ' ',(new.rfind(' ')))
            while (len(new) < n):
                new = insert(new,' ',(new.rfind(' ')))
            printn(new)       

        new = inf.readline(n)


    print '\nclosing files...'
    inf.close()
    print 'input closed'
    of.close()
    print 'output closed'
如果行长度n==37

输出:

Lorem ipsum dolor sit amet, consectet
ur adipisicing elit, sed do eiusmod t
magna aliqua. Ut enim ad minim veniam
, quis nostrud exercitation ullamco l
consequat. Duis aute irure dolor in r
cillum dolore eu fugiat nulla pariatu
non proident, sunt in culpa qui offic
ia deserunt mollit anim id est laboru
m                                   .
你是在给文字赋值。像这样试试

for x in new:
    if x == ' ':
        insert(new, x, find(' '))

看看它是否有效?

我在理解你想做什么方面有点困难。。。看起来您可能需要
textwrap
模块()。如果这不是你想要的,让我知道,我会很高兴地删除这个答案

编辑

这是你想要的吗

s="""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum."""

import textwrap

print textwrap.fill(s,37)
EDIT2


在这种情况下,我会将您的字符串拆分为每个N块长的子字符串,将这些字符串一个接一个地存储在列表中,然后在一天结束时加入(列表中的字符串)。不过,我不想把它编出来,因为我怀疑这是家庭作业。

你能给出输入/输出的例子吗?或者在new:if x='':insert(new,x,find('')这不会迭代行中的每个字符吗?我只需要空格。它将遍历每个字符并调用insert(),如果x是一个空格字符。我明白了。但最后一行仍然比指定的n短。无论如何,谢谢你的帮助。这是一个很好的建议,但我认为我不应该使用库函数。为什么,我不太确定。但它在我的程序规范中。@growthndevlpmnt如果这是作业,你应该给它贴上这样的标签。这很好。学校放假了。这是我的研究导师提出的一个挑战,作为热身。我想它可以归类为家庭作业。不过,谢谢你的帮助。
for x in new:
    if x == ' ':
        insert(new, x, find(' '))
s="""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum."""

import textwrap

print textwrap.fill(s,37)