【问题标题】:Finding the next/previous item from a list from a given substring从给定子字符串的列表中查找下一个/上一个项目
【发布时间】: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] 一样放置字符串/文本,它会在该位置给出字符串。

标签: python string list


【解决方案1】:

我猜你的变量 text 是一个字符串变量。执行 for 循环会导致变量 i 也是一个字符串。 Python3 拒绝将数字减去字符串。你的问题可以通过改变来解决:

for i in text:

进入

for i in range(len(txt)):

for i,word in enumerate(text):

希望对你有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多