Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
74 views
in Technique[技术] by (71.8m points)

python 3.x - Trying to skip a unicode value in a list to write to a treeview

I am trying to write data from Strava to a treeview, however, when it writes I will get the error

_tkinter.TclError: character U+1f1e8 is above the range (U+0000-U+FFFF) allowed by Tcl

I realised this was due to someone using an emoji in the name of their ride. I wrote code that only skips some Unicode values and not others. My code is seen below:

    count = 0
    distanceM = 0
    distanceML = 0
    elevationM = 0
    elevationFT = 0
    full_name = ""
    for row in strava.get_children():
        strava.delete(row)


    auth_url = "https://www.strava.com/oauth/token"
    activites_url = "https://www.strava.com/api/v3/clubs/2885/activities"

    payload = {
        'client_id': "XXXXX",
        'client_secret': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        'refresh_token': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        'grant_type': "refresh_token",
        'f': 'json'
    }
    res = requests.post(auth_url, data=payload, verify=False)
    access_token = res.json()['access_token']
    ride_name = ""
    header = {'Authorization': 'Bearer ' + access_token}
    param = {'per_page':200, 'page':1}
    my_dataset = requests.get(activites_url, headers=header, params=param).json()

    for i in range (0,len(my_dataset)):
        entry = 1
        strava.tag_configure('odd',background = "#fc4d03")
        strava.tag_configure('even', background = 'white')
        full_name = str(my_dataset[i]["athlete"]["firstname"])+ " " + str(my_dataset[i]["athlete"]["lastname"])
        distanceM = int(my_dataset[i]["distance"])
        distanceML = distanceM * 0.000621371
        distanceML = '%.2f'%(distanceML)
        elevationM = int(my_dataset[i]["total_elevation_gain"])
        elevationFT = elevationM * 3.28084
        elevationFT = '%.0f'%(elevationFT)
        ride_name = (my_dataset[i]["name"])
        try:
            ride_name.encode('ascii')
        except UnicodeEncodeError:
            entry = 0
        if entry == 1:
            if count%2 == 0:
                strava.insert("", "end", text="", values=(full_name,my_dataset[i]["name"],distanceML,elevationFT), tag = ('even',))
            else:
                strava.insert("", "end", text="", values=(full_name,my_dataset[i]["name"],distanceML,elevationFT), tag = ('odd',))

            count = count+1
question from:https://stackoverflow.com/questions/65919340/trying-to-skip-a-unicode-value-in-a-list-to-write-to-a-treeview

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...