【发布时间】:2021-01-14 13:45:24
【问题描述】:
我正在尝试从频率小于 1 的给定文本(第一个参数)中获取子字符串(第二个参数/输入词)的上一个和下一个字符串的元组。我试图循环遍历该文本,找到输入词,检查输入词的左/右词是否频率较低,然后创建一个元组并将其添加到其中。试图从输入单词中获取所有左右项目,但得到TypeError: unsupported operand type(s) for -: 'str' and 'int'
或String of character not the whole word.{('o', 'n'), ('t', 'l')}\
for i in text:
if i == second_arg:
if i!=0:
prev = str(text[i-1])
elif i < len(text)-1:
aft = str(text[i+1])
return set(prev, aft)
for indx, word in enumerate(text):
if word == second_arg:
if indx!=0:
prev = (text[indx-1])
if i!=(len(text)-1):
aft = (text[indx+1])
return prev, aft
print(function_name(text, "example"))
我什至无法获得列表中的上一个项目。 谢谢你。 注意: text= text.split(), 是一个列表。字符串列表
【问题讨论】:
-
你正在循环一个字符串,所以你每次迭代都会传递一个字符。您可以使用
text.split()将您的字符串转换为列表,其中包含分隔的单词。 -
@MitchellOlislagers 它实际上是列表。我已经拆分它,删除了所有标点符号。都做到了。
-
您能提供所有数据来复制您的错误吗?另请注意,您的缩进已关闭,并且您在函数之外调用
return,这是不可能的。 -
正如@MitchellOlislagers 所说,请提供您使用的数据并更正您的缩进,以便我们为您提供帮助。还提供输入和所需输出的示例可以帮助我们为您提供帮助。
-
我已经整理好了,:) python 3 为 [ ] 抛出错误,它只是 i-1,i+1,尽管它只会给出整数。如果我像 text[aft] 一样放置字符串/文本,它会在该位置给出字符串。