【问题标题】:Removing part of the string and adding to another删除部分字符串并添加到另一个
【发布时间】:2018-12-04 13:51:01
【问题描述】:

我有这样的字符串

str1 = "https://web2.some.com/hbh/productImages?itemId=5986546"
str2 = "https://web2.some.com/hbh/productImages?itemId=5986546231"
str3 = "https://web2.some.com/hbh/productImages?itemId=22432"

如何只将最后一个数字 "5986546" 、 "5986546231" 、 "22432" 添加到其他字符串。

我的意思是我只需要以某种方式从字符串中删除 "https://web2.some.com/hbh/productImages?itemId=" 部分。当然,这个数字的长度可能会有所不同。

【问题讨论】:

  • 你的问题不清楚。 “我怎样才能只添加最后一个数字......”是什么意思?你想如何“添加”它们?预期的结果是什么?接下来您将讨论从 URL 中删除数字,这是一个不同的问题。
  • 您可能想要解析 URL,然后更改它。
  • 你在寻找子字符串?itemId=your_numbers然后使用正则表达式
  • @timgeb 我只需要输出 itemId=之后的数字

标签: python string url


【解决方案1】:

对于单个参数,您可以使用标准库中的urllib.parse

from urllib.parse import urlparse

str1 = "https://web2.some.com/hbh/productImages?itemId=5986546"

item1 = urlparse(str1).query.split('=')[-1]  # '5986546'

对于多个参数,可以通过urllib.parse_qs构造字典:

from urllib.parse import urlparse, parse_qs

str2 = "https://web2.some.com/hbh/productImages?itemId=5986546&somevar=5"

args = parse_qs(urlparse(str2).query)
item2 = args['itemId']  # '5986546'

【讨论】:

  • 如果url字符串的参数多于一个itemId怎么办?
【解决方案2】:

对字符串使用 split 函数。

str1.split("https://web2.some.com/hbh/productImages?itemId=")[-1]

【讨论】:

    【解决方案3】:

    由于您的网址不包含多个=,您可以使用str.split

    id = str1.split('=')[-1] # or [1] in this case no diff
    

    【讨论】:

    • @brunodesthuilliers 我知道这一点,这就是为什么我说“由于您的网址不包含多个=,您可以使用str.split”!!!我的意思是在这种情况下,没关系。
    【解决方案4】:

    使用正则表达式:

    import re 
    
    str1 = "https://web2.some.com/hbh/productImages?itemId=5986546"
    str2 = "https://web2.some.com/hbh/productImages?itemId=5986546231"
    str3 = "https://web2.some.com/hbh/productImages?itemId=22432"
    
    regex = re.compile(r'(\d+?)$')
    l = regex.findall(str1)
    print(l)
    

    输出:

    C:\Users\Desktop>py x.py
    ['5986546']
    

    此外,以下代码将一次性返回所有内容:

    all_strings = ''.join( [str1,str2,str3])
    
    regex = re.compile(r'(\d{2,})')
    l = regex.findall(all_strings)
    print(l)
    

    输出:

    C:\Users\Desktop>py x.py
    ['5986546', '5986546231', '22432']
    

    【讨论】:

    • 为什么要投反对票?我提供的答案是有效的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多