基于函数 +1

问题描述

我正在尝试在 c_item_number_one = (r'12" Pipe SA-106 GR. B SCH 40 WALL smls'.upper())搜索 "提取它和它前面的所有信息。即我想要 12"

我以为我可以只搜索 " 在什么位置...

def find_nps_via_comma_item_one():
    nps = '"'
    print(c_item_number_one.find(nps))
find_nps_via_comma_item_one()

Image showing above function results in 2 然后切掉所有东西

c_item_number_one = (r'12" Pipe SA-106 GR. B SCH 40 WALL smls'.upper())

def find_nps_via_comma_item_one():
    nps = '"'
    print(c_item_number_one.find(nps))
find_nps_via_comma_item_one()

item_one_nps = slice(3)
print(c_item_number_one[item_one_nps])

问题:返回错误

print(c_item_number_one[item_one_nps])

TypeError: slice indices must be integers or None or have an __index__ method

如何将函数的结果转换为整数?我曾尝试将 print(c_item_number_one.find(nps)) 更改为 return(c_item_number_one.find(nps)),但后来它完全停止提供值。

最后,切片部分不会产生我正在寻找的完整答案 12"。即使我输入函数 2

产生的值
item_one_nps = slice(2)
print(c_item_number_one[item_one_nps])

它只给我 12。我需要+1函数结果。

解决方法

你可以这样做

sep_char = "\"" 
c_item_number_one.split(sep_char)[0] + sep_char
,

print 语句将一个值打印到控制台,而 return 返回一个调用函数的值。

在您的代码中,您没有存储值,而只是将其打印到控制台,即使您使用 return 而不是 print 您没有使用返回的值。

1 被添加到切片中,因为在切片 python 时排除了停止索引,以便包括您添加的停止索引 1

c_item_number_one = (r'12" Pipe SA-106 GR. B SCH 40 WALL smls'.upper())

def find_nps_via_comma_item_one():
    nps = '"'
    return(c_item_number_one.find(nps))

item_one_nps = slice(find_nps_via_comma_item_one()+1)
print(c_item_number_one[item_one_nps])

下面的代码比较冗长。

c_item_number_one = (r'12" Pipe SA-106 GR. B SCH 40 WALL smls'.upper())

def find_nps_via_comma_item_one():
    nps = '"'
    return(c_item_number_one.find(nps))

index = find_nps_via_comma_item_one()

item_one_nps = slice(index+1)
print(c_item_number_one[item_one_nps])