我在解析正确的方法时遇到了一些问题。我想将完整的字符串分成两个单独的字符串。然后删除“=” - 第一个字符串的符号和第二个字符串的“,” - 符号。根据我的输出,我可以得出结论,我做错了什么,但我似乎没有找到问题所在。我希望第一部分转换为整数,我已经尝试使用map(int,split())。
如果有人有提示,我会很感激。
这是我的输出:
('5=20=22=10=2=0=0=1=0=1', 'Vincent Appel,Johannes Mondriaan')
这是我的计划:
mystring = "5=20=22=10=2=0=0=1=0=1;Vincent Appel,Johannes Mondriaan"
def split_string(mystring):
strings = mystring.split(";")
x = strings[0]
y = strings[-1]
print(x,y)
def split_scores(x):
scores = x.split("=")
score = scores[0]
names = scores[-1]
stnames(names)
print score
def stnames(y):
studentname = y.split(",")
name = studentname[1]
print name
split_string(mystring)
答案 0 :(得分:1)
split_string(mystring)
运行第一个函数,生成带有2个字符串的元组。但是没有其他功能可以执行进一步拆分。
尝试:
x, y = split_string(mystring)
x1 = split_scores(x)
y1 = stnames(y)
(x1, y1)
哎呀,你的功能打印结果,不回复它们。所以你还需要:
def split_string(mystring):
# split mystring on ";"
strings = mystring.split(";")
return strings[0],strings[1]
def split_string(mystring):
# this version raises an error if mystring does not have 2 parts
x, y = mystring.split(";")
return x,y
def split_scores(x):
# return a list with all the scores
return x.split("=")
def stnames(y):
# return a list with all names
return y.split(",")
def lastname(y):
# return the last name (, delimited string)
return y.split(",")[-1]
如果要在函数之间拆分任务,最好让它们返回结果而不是打印它们。这样它们可以以各种组合使用。函数中的print
仅用于调试目的。
或紧凑的脚本版本:
x, y = mystring.split(';')
x = x.split('=')
y = y.split(',')[-1]
print y, x
如果您想将分数作为数字,请添加:
x = [int(x) for x in x]
处理。
答案 1 :(得分:0)
试试这个:
def split_string(mystring):
strings = mystring.split(";")
x = int(strings[0].replace("=",""))
y = strings[-1].replace(","," ")
print x,y
答案 2 :(得分:0)
我的两分钱。
如果我理解你想要实现的目标,这段代码可能会有所帮助:
mystring = "5=20=22=10=2=0=0=1=0=1;Vincent Appel,Johannes Mondriaan"
def assignGradesToStudents(grades_and_indexes, students):
list_length = len(grades_and_indexes)
if list_length%2 == 0:
grades = grades_and_indexes[:list_length/2]
indexes = grades_and_indexes[list_length/2:]
return zip([students[int(x)] for x in indexes], grades)
grades_and_indexes, students = mystring.split(';')
students = students.split(',')
grades_and_indexes = grades_and_indexes.split('=')
results = assignGradesToStudents(grades_and_indexes, students)
for result in results:
print "[*] {} got a {}".format(result[0], result[1])
<强>输出:强>
[*] Vincent Appel got a 5
[*] Vincent Appel got a 20
[*] Johannes Mondriaan got a 22
[*] Vincent Appel got a 10
[*] Johannes Mondriaan got a 2