编程新手,目前正在使用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
请告诉我有更好的方法。
谢谢
答案 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))