在多个位置拆分字符串

时间:2017-10-06 07:24:03

标签: python string

编程新手,目前正在使用python。我试图用一个用户输入的字符串(包含字母,数字和特殊字符),然后我需要在不同的点多次拆分它来改革新的字符串。我已经对字符串(和列表)的分割进行了研究,并且觉得我理解它,但我仍然知道必须有一种比我能想到的更好的方法。

这就是我目前所拥有的

ass=input("Enter Assembly Number: ")
#Sample Input 1 - BF90UQ70321-14
#Sample Input 2 - BS73OA91136-43
ass0=ass[0]
ass1=ass[1]
ass2=ass[2]
ass3=ass[3]
ass4=ass[4]
ass5=ass[5]
ass6=ass[6]
ass7=ass[7]
ass8=ass[8]
ass9=ass[9]
ass10=ass[10]
ass11=ass[11]
ass12=ass[12]
ass13=ass[13]
code1=ass0+ass2+ass3+ass4+ass5+ass6+ass13
code2=ass0+ass2+ass3+ass4+ass5+ass6+ass9
code3=ass1+ass4+ass6+ass7+ass12+ass6+ass13
code4=ass1+ass2+ass4+ass5+ass6+ass9+ass12
# require 21 different code variations

请告诉我有更好的方法。

谢谢

2 个答案:

答案 0 :(得分:0)

看看这段代码和Google" python string slicing" (一个很好的初学者教程是https://www.youtube.com/watch?v=EqAgMUPRh7U)。

在Python中使用了很多字符串(和列表)切片。一定要好好学习。上层指数可能不那么直观,但它成为第二天性。

ass="ABCDEFGHIJKLMN"

code1 = ass[0] + ass[2:7] + ass[13]   # ass[2:7] is to extract 5 chars starting from index 2 (7 is excluded)
code2 = ass[0] + ass[3:7] + ass[9]
code3 = ass[1] + ass[4] + ass[6:8] + ass[12] + ass[6] + ass[13]
code4 = ass[1:3] + ass[4:7] + ass[9] + ass[12]

PS:在使用它之前,您可能还需要检查字符串长度是否为14。

编辑:第二个解决方案

这是另一种解决方案,也许更容易理解:

def extract_chars(mask):
    chars = ""
    for i in mask:
        chars += ass[i]
    return chars

mask = [0,2,3,4,5,6,13]
print extract_chars(mask)

在此定义要提取的字符索引的掩码。

答案 1 :(得分:0)

您可以尝试这样的事情,

input1 = 'BF90UQ70321-14'
code = lambda anum, pos: ''.join(anum[p] for p in pos)

code4 = code(input1, (1,2,4,5,6,9,12))