问题描述
我正在尝试在 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])