基于函数的故障切片 +1

Trouble slicing based on function +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 函数结果。

print 语句将值打印到控制台,而 return returns 是调用函数的值。

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

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])

你可以

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