![](/img/trans.png)
[英]Is this a correct way to return JSON in Python/GAE for parsing in JavaScript?
[英]Parsing string with Python correct way
我在解析正確的方法時遇到了一些問題。 我想將完整的字符串分成兩個單獨的字符串。 然后從第一個字符串中刪除“ =”符號,從第二個字符串中刪除“,”符號。 從我的輸出中,我可以得出結論:我做錯了什么,但是我似乎並沒有找到問題所在。 我希望第一部分轉換為整數,並且已經使用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)
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]
來處理。
嘗試這個:
def split_string(mystring):
strings = mystring.split(";")
x = int(strings[0].replace("=",""))
y = strings[-1].replace(","," ")
print x,y
我的兩分錢。
如果我了解您要實現的目標,則此代碼可以幫助您:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.