如何操纵字符串以等于另一个字符串的长度?

时间:2016-08-18 01:21:57

标签: python string

例如,我有字符串s1 = "lets go to the mall" 和第二个字符串s2 = "hello"

在Python中,我如何操纵s2字符串以等于s1的长度。

然后

s2看起来像:

s2 = "hellohellohellohell"s1的字符数相同。

9 个答案:

答案 0 :(得分:4)

这是一种方法:

s1 = 'lets go to the mall'
s2 = 'hello'
s2 = ''.join(s2[i % len(s2)] for i in range(len(s1)))
print(s2)  # "hellohellohellohell"

编辑:以下是对那些不熟悉Python或编程的人的解释=]

  • ''.join(...)接受 iterable ,这是你可以迭代的东西,并将所有这些元素与空字符串连接在一起。所以,如果里面的内容是可迭代的字母,它会将所有这些字母连接在一起。
  • range(len(s1))生成所有数字0len(s1) - 1的可迭代。此可迭代中的数字数等于s1的长度。
  • s2[i]表示索引s2中字符串i中的字母。因此,如果s2 = 'hello',则s2[0] = 'h's2[1] = 'e'
  • i % len(s2)表示ilen(s2),或i除以s2长度时的余数。
  • 所以,把这一切放在一起,这段代码首先创建一个可迭代的字母,循环遍历s2所需的次数,以便获得len(s1)多个字母,然后将它们连接在一起中间的空字符串。

答案 1 :(得分:2)

Itertools就是答案。更具体地说,takewhilecycle

import itertools

s1 = "lets go to the mall"
s2 = "Hello"

print ("".join(s for _, s in itertools.takewhile(lambda t: t[0] < len(s1), enumerate(itertools.cycle(s2)))))

甚至更简单(使用islice):

print ("".join(itertools.islice(itertools.cycle(s2)), len(s1)))

答案 2 :(得分:1)

//是整数除法,它找到整数倍。 %是模数(余数)

s2的次数乘以s1,然后使用切片添加s2的剩余部分。

s3 = s2 * (len(s1) // len(s2)) + s2[:(len(s1) % len(s2))]

>>> s3
'hellohellohellohell'

答案 3 :(得分:0)

(s2 * (len(s1)//len(s2) + 1))[:len(s1)]

答案 4 :(得分:0)

基本上将s2乘以分割的两个长度的math.floor,然后添加字符串的其余部分:

def extend(s1, s2):
    return s2*int(math.floor(len(s1)/len(s2)))+s2[:len(s1) % len(s2)]
>>> extend("lets go to the mall", "hello")
'hellohellohellohell'
>>> 

答案 5 :(得分:0)

离开我的头顶,你必须原谅我,你可以使用这样的功能:

def string_until_whenever(s1, s2):
i = len(s1)
x = 0
newstring = ""
while i != 0:
    newstring = newstring + s2[x]
    x += 1
    i -= 1
    if x == len(s2) - 1:
         x = 0
return newstring

答案 6 :(得分:0)

低效但简单。 (乘法使字符串比它需要的长得多。)

n = len(s1)
s3 = (s2*n)[:n]

答案 7 :(得分:0)

我认为有很多可能的解决方案。在许多可能的解决方案中,我的答案是:

s2 = s2*(len(s1)/len(s2)+1)
s2 = s2[0:len(s1)]

答案 8 :(得分:0)

可能不是最干净的解决方案,但你也可以使用字符串乘法和字符串切片来做到这一点:

def string_until_whenever(s1, s2):
    temp = ""    
    if len(s2) > len(s1):
        temp = s2
        s2 = s1
        s1 = temp

    new_string = ""
    multiply_by = len(s1)/len(s2)
    modulo = len(s1) % len(s2)    
    new_string = s2 * multiply_by
    new_string = new_string + s2[0:modulo]    

    return new_string


print(string_until_whenever("lets go to the mall", "hello"))
#Outputs: hellohellohellohell