如何向后切割字符串python

时间:2015-07-16 02:46:50

标签: python string reverse slice file-extension

我正在学习python,我制作了一个基本程序,用户将照片链接输入并输入,然后程序下载该照片。为了确保用户没有输入网页而不是照片的链接,我让程序通过字符串切片检查文件扩展名是什么,但我似乎无法找到如何向后切割字符串

我知道这是一个愚蠢的问题,但经过一个小时的搜索,我仍然无法找到答案。这是代码

import random
import urllib.request
import urllib.parse

def download_web_image(url, file_format):
    try:
        name = random.randrange(1, 1000)
        full_name = str(name) + file_format
        urllib.request.urlretrieve(url, full_name)
        print("Image download successful!")
        print("Image named " + full_name)
    except:
        print('Error')


def get_user_url():
    url = input("Now enter the url of the photo you want to download:")
    try:

        if url[0:3:-1] is '.png':
            download_web_image(url, ".png")
        elif url[0:4:-1] is 'gepj.':
            download_web_image(url, '.jpeg')
        elif url[0:3:-1] is '.gpj':
            download_web_image(url, '.jpg')
        else:
            print('the file format is uncompatible: ' + url[1:4:-1])

    except:
        print('The url is not valid!')

print('look for an image on a website, make sure it is a JPG or PNG file or it will not work!')
get_user_url()

感谢您的帮助。不,我不希望字符串向后显示。

3 个答案:

答案 0 :(得分:4)

我建议你使用内置方法endswith省去可变大小扩展程序(pngjpegjpg ...等)的麻烦,这样做:

>>>url = 'https://www.python.org/static/community_logos/python-logo-master-v3-TM.png'
>>>url.endswith('.png')
True

答案 1 :(得分:1)

你想要的是用负数进行索引,从列表/字符串的末尾搜索:

extension = url[-3:]将检索url中的最后3个字符。

url[-1]url的最后一个字符,url[-2]是倒数第二个,依此类推。所以url[-3:]获取从第3个到最后一个字符到字符串结尾的所有内容。

答案 2 :(得分:0)

以下类型的方法可能更容易理解:

def get_user_url():
    url = input("Now enter the url of the photo you want to download: ")

    try:
        extension = os.path.splitext(url.lower())[1]

        if extension in [".png", ".jpeg", ".jpg"]:
            download_web_image(url, extension)
        else:
            print('the file format is uncompatible: {:}'.format(extension))

    except:
        print('The url is not valid!')

我建议您也将输入转换为小写,以便同时捕获“.JPG”。