【问题标题】:How to split the string into half and extract the second part?如何将字符串分成两半并提取第二部分?
【发布时间】:2021-08-31 13:23:11
【问题描述】:
a = "https://imagesvc.meredithcorp.io/v3/mm/image?url=https%3A%2F%2Fimages.media-allrecipes.com%2Fuserphotos%2F4418848.jpg"
output = re.split("=", a)[1]
print(output)

输出:https%3A%2F%2Fimages.media-allrecipes.com%2Fuserphotos%2F4418848.jpg

我想将此应用于整个列,我尝试以两种方式获取输出,但它给了我错误。该列还有一些没有值的行会影响输出吗?

mexican['Image'] = mexican['Image'].str.split("=")[1]

报错:

ValueError:值的长度 (1) 与索引的长度 (2982) 不匹配

for i in mexican['Image']:
  mexican["Image"] = re.split("=", i)[1]

报错:

IndexError: 列表索引超出范围

解决办法:

我遇到了问题,因为我的专栏中有 Nan 值。所以我尝试在这种情况下使用 try-except 方法

for i in range(len(data['Image'])):
    try:
        data['Image'][i]=(data['Image'][i].split('='))[1]
    except:
        pass

【问题讨论】:

  • 您在迭代时修改了mexican 列表。你的意思是这样的:for i in range(len(mexican['Image']): mexican['Image'][i] = re.split("=", mexican['Image'][i])[1]
  • @JohnnyMopp 仍然给出错误 IndexError: list index out of range
  • 您还需要检查返回的数组的长度是否为 2。例如:for i in range(len(mexican['Image'])): if '=' in mexican['Image'][i]: mexican['Image'][i] = mexican['Image'][i].split("=")[1]

标签: python string web-scraping error-handling scrapy


【解决方案1】:

你可以像这样提取第二部分

s = "https://imagesvc.meredithcorp.io/v3/mm/image?url=https%3A%2F%2Fimages.media- 
allrecipes.com%2Fuserphotos%2F4418848.jpg"
s2 = s[len(s)//2:]
print(s2)

【讨论】:

  • 我希望为整个列完成此操作,而不仅仅是上面提到的一个值
【解决方案2】:

解决方案 1: 您使用“拆分”错误

你必须这样做。

a = "https://imagesvc.meredithcorp.io/v3/mm/image?url=https%3A%2F%2Fimages.media-allrecipes.com%2Fuserphotos%2F4418848.jpg"
output = a.split("=")[1]
print(output)

解决方案 2: 您也可以为此使用正则表达式

import re

a = "https://imagesvc.meredithcorp.io/v3/mm/image?url=https%3A%2F%2Fimages.media-allrecipes.com%2Fuserphotos%2F4418848.jpg"
output = re.search("=(.*)" , a)
if output != None: print(output.group(1))

解决方案 3: 使用 for 循环和数据集正确使用“split”:

for index, row in mexican.iterrows():
     mexican.loc[index, "Image"] = row["Image"].split("=")[1]

【讨论】:

  • 对于第三种解决方案,而不是将输出放入变量“输出”中,如何将输出值放入列本身?
  • 列是什么意思?
  • 到底什么是“墨西哥人["Image"]"
  • 是字典吗?
  • “mexican”是数据集,“Image”是有url的列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2023-03-17
  • 2022-01-22
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多