Python 3.x 插入“\";字符串中具有给定位置的字符
我正在开发一个python函数名Python 3.x 插入“\";字符串中具有给定位置的字符,python-3.x,Python 3.x,我正在开发一个python函数名reformate(str,n),其目的是在给定位置插入“\n”字符(这里是第三个位置) 例如,重塑(3,“abc de fghij”)的结果应该是“abc\ndef\nghi\nj” 这是我的函数代码: def InsertCharacter(string,n): i=n str1 ="" string=string.replace(" ","") while((i%n == 0) and (i < len(string)
reformate(str,n)
,其目的是在给定位置插入“\n”
字符(这里是第三个位置)
例如,重塑(3,“abc de fghij”)的结果应该是“abc\ndef\nghi\nj”
这是我的函数代码:
def InsertCharacter(string,n):
i=n
str1 =""
string=string.replace(" ","")
while((i%n == 0) and (i < len(string) -1)):
s1= string[:i]
s2= string[i:]
str1 = str1 +s1 + "\n" +s2
i=i+1
return(str1)
我不明白为什么我没有得到预期的结果
感谢您的帮助您可以使用带有范围和切片的列表理解来对输入字符串进行分块,然后在换行上加入结果:
>>> s = "abc de fghij"
>>> s = s.replace(" ", "")
>>> step = 3
>>> "\n".join([s[i:i+step] for i in range(0, len(s), step)])
'abc\ndef\nghi\nj'
>>> step = 4
>>> "\n".join([s[i:i+step] for i in range(0, len(s), step)])
'abcd\nefgh\nij'
这里的输出不仅仅是在第三个位置插入
“\n”
。它还删除了空格。这里的逻辑是什么?@ggorlen,是的,它应该删除空格并在每个第三个位置插入“\n”。您不会得到多个\n
,因为经过一两次迭代后,i%n==0
不再为真,您将退出循环。此外,切片没有多大意义。无需从起点到交换点再到终点重复切割,O(n^2)复杂性s[i:i+step]
就足够了。顺便说一句,我建议阅读。对于
和列表理解基本上是等价的。您可以将任何列表理解重新编写为for
循环,将任何for
循环重新编写为while
,但每一步都会使它更混乱、更不容易出错。使用代替列表comp的唯一原因是列表comp中的操作太嵌套或太冗长,无法读取<当终止条件可变时,代码>while应仅替换的,这是一种非典型情况,因为大多数循环都是固定长度的列表或iterables。
>>> s = "abc de fghij"
>>> s = s.replace(" ", "")
>>> step = 3
>>> "\n".join([s[i:i+step] for i in range(0, len(s), step)])
'abc\ndef\nghi\nj'
>>> step = 4
>>> "\n".join([s[i:i+step] for i in range(0, len(s), step)])
'abcd\nefgh\nij'