鱼C论坛

 找回密码
 立即注册
查看: 1232|回复: 7

[已解决]这个题没看懂,就是对于两个单词不知道如何操作,求教谢谢

[复制链接]
发表于 2023-8-5 20:30:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. """单词在字符串中的位置"""
  2. #给定一个字符串 text 和字符串列表 words
  3. #返回 words 中每个单词在 text 中的位置(要求最终的位置从小到大进行排序)
  4. #示例如下

  5. #text:"I love FishC and FishC love me"
  6. #words:"FishC"
  7. #输出:[[7, 11], [17, 21]]

  8. #text:"I love FishC and FishC love me"
  9. #words:"FishC love"
  10. #输出:[[2, 5], [7, 11], [17, 21], [23, 26]]

  11. #text:"FCFCF"
  12. #words:"FCF FC"输出:[[0, 1], [0, 2], [2, 3], [2, 4]]
  13. #输出:[[0, 1], [0, 2], [2, 3], [2, 4]]

  14. text = input("请输入text的内容:")
  15. words = input("请输入words的内容:")
  16. x = []

复制代码
对于两个单词的情况不是很清楚,怎么把它分别提取出来


最佳答案
2023-8-5 20:36:25
本帖最后由 学习编程中的Ben 于 2023-8-5 20:49 编辑
小儿无赖 发表于 2023-8-5 20:31
还没学到split函数,可以不用它来做吗?


当然可以,您可以使用其他方法来解决这个问题。一个替代的方法是使用正则表达式来匹配单词。

以下是使用正则表达式实现的代码示例:
  1. import re

  2. text = input("请输入text的内容:")
  3. words = input("请输入words的内容:")
  4. x = []

  5. # 使用正则表达式匹配单词
  6. word_pattern = r"\b\w+\b"
  7. text_words = re.findall(word_pattern, text)

  8. # 遍历words列表中的每个单词
  9. for word in words.split():
  10.     positions = []
  11.     # 在text中查找该单词的位置
  12.     for i in range(len(text_words)):
  13.         if text_words[i] == word:
  14.             positions.append([i, i + len(word) - 1])
  15.     x.extend(positions)

  16. # 按照位置的起始位置进行排序
  17. x.sort()

  18. print(x)
复制代码

在上述代码中,我们使用正则表达式r"\b\w+\b"来匹配text中的每个单词,并存储在text_words列表中。然后,我们遍历words列表中的每个单词,并在text_words列表中查找该单词的位置。最后,按照位置的起始位置进行排序并打印结果。

请注意,为了使用正则表达式,您需要导入Python的re库。

希望这个解决方案对您有帮助!如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-5 20:30:41 | 显示全部楼层
根据题目的要求,我们需要将字符串text中的每个单词与字符串列表words中的每个单词进行比较,并返回它们在text中的位置。

首先,我们可以使用split()函数将text字符串分割成单词列表。然后,我们可以遍历words列表中的每个单词,并使用find()函数找到该单词在text中的位置。

以下是解决这个问题的代码示例:

  1. text = input("请输入text的内容:")
  2. words = input("请输入words的内容:")
  3. x = []

  4. # 将text字符串分割成单词列表
  5. text_words = text.split()

  6. # 遍历words列表中的每个单词
  7. for word in words.split():
  8.     positions = []
  9.     # 在text中查找该单词的位置
  10.     for i, text_word in enumerate(text_words):
  11.         if text_word == word:
  12.             positions.append([i, i+len(word)-1])
  13.     x.extend(positions)

  14. # 按照位置的起始位置进行排序
  15. x.sort()

  16. print(x)
复制代码


希望能帮助到你!如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:30:49 | 显示全部楼层
问题:单词在字符串中的位置

给定一个字符串text和字符串列表words,要求返回words中每个单词在text中的位置(最终的位置按从小到大进行排序)。

示例说明:
- text:"I love FishC and FishC love me"
- words:"FishC"
- 输出:[[7, 11], [17, 21]]

- text:"I love FishC and FishC love me"
- words:"FishC love"
- 输出:[[2, 5], [7, 11], [17, 21], [23, 26]]

- text:"FCFCF"
- words:"FCF FC"
- 输出:[[0, 1], [0, 2], [2, 3], [2, 4]]

下面是修改后的代码:
  1. text = input("请输入text的内容:")
  2. words = input("请输入words的内容:")
  3. x = []
  4. for word in words.split():
  5.     start = 0
  6.     result = []
  7.     while start < len(text):
  8.         index = text.find(word, start)
  9.         if index == -1:
  10.             break
  11.         result.append([index, index + len(word) - 1])
  12.         start = index + 1
  13.     x.extend(result)
  14. x.sort()
  15. print(x)
复制代码

在这段代码中,我们首先使用split()函数将字符串words拆分成单词列表。然后,我们遍历每个单词,并使用find()函数在text中查找该单词的起始位置。如果找到了匹配的位置,我们将其保存在result列表中。然后,将result添加到x列表中。最后,我们对x进行排序,并打印输出结果。

希望这个回答能够帮到你!如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:30:49 | 显示全部楼层
问题:单词在字符串中的位置

给定一个字符串text和字符串列表words,要求找出列表中每个单词在字符串中的位置,并按照位置从小到大排序。下面是几个示例:

示例1:
[/code]
text = "I love FishC and FishC love me"
words = ["FishC"]
输出:[[7, 11], [17, 21]]
[/code]

示例2:
[/code]
text = "I love FishC and FishC love me"
words = ["FishC love"]
输出:[[2, 5], [7, 11], [17, 21], [23, 26]]
[/code]

示例3:
[/code]
text = "FCFCF"
words = ["FCF", "FC"]
输出:[[0, 1], [0, 2], [2, 3], [2, 4]]
[/code]

下面是一个解决这个问题的示例代码:
  1. text = input("请输入text的内容:")
  2. words = input("请输入words的内容:").split()
  3. result = []
  4. for word in words:
  5.     start = 0
  6.     word_positions = []
  7.     while True:
  8.         index = text.find(word, start)
  9.         if index == -1:
  10.             break
  11.         word_positions.append([index, index + len(word) - 1])
  12.         start = index + 1
  13.     result.extend(word_positions)
  14. result.sort()
  15. print(result)
复制代码

在这段代码中,我们首先通过input()函数获取用户输入的text和words。然后,我们创建一个空的列表result用于存储单词在字符串中的位置。

对于每个单词,我们使用start变量记录起始位置,然后使用str.find()函数在字符串中查找该单词。如果找到了,我们将找到的位置范围添加到word_positions列表中,并更新start为下一个搜索起点。

最后,我们对result列表进行排序,然后打印出结果。

希望这个回答对你有帮助!如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-5 20:31:28 | 显示全部楼层
isdkz 发表于 2023-8-5 20:30
根据题目的要求,我们需要将字符串text中的每个单词与字符串列表words中的每个单词进行比较,并返回它们在t ...

还没学到split函数,可以不用它来做吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:36:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 学习编程中的Ben 于 2023-8-5 20:49 编辑
小儿无赖 发表于 2023-8-5 20:31
还没学到split函数,可以不用它来做吗?


当然可以,您可以使用其他方法来解决这个问题。一个替代的方法是使用正则表达式来匹配单词。

以下是使用正则表达式实现的代码示例:
  1. import re

  2. text = input("请输入text的内容:")
  3. words = input("请输入words的内容:")
  4. x = []

  5. # 使用正则表达式匹配单词
  6. word_pattern = r"\b\w+\b"
  7. text_words = re.findall(word_pattern, text)

  8. # 遍历words列表中的每个单词
  9. for word in words.split():
  10.     positions = []
  11.     # 在text中查找该单词的位置
  12.     for i in range(len(text_words)):
  13.         if text_words[i] == word:
  14.             positions.append([i, i + len(word) - 1])
  15.     x.extend(positions)

  16. # 按照位置的起始位置进行排序
  17. x.sort()

  18. print(x)
复制代码

在上述代码中,我们使用正则表达式r"\b\w+\b"来匹配text中的每个单词,并存储在text_words列表中。然后,我们遍历words列表中的每个单词,并在text_words列表中查找该单词的位置。最后,按照位置的起始位置进行排序并打印结果。

请注意,为了使用正则表达式,您需要导入Python的re库。

希望这个解决方案对您有帮助!如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:49:23 | 显示全部楼层
给个最佳答案呗!求你了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 08:26:00 | 显示全部楼层
  1. text = input("请输入text的内容:")
  2. words = input("请输入words的内容:")
  3. x = []

  4. text_words = []
  5. current_word = ""
  6. for char in text:
  7.     if char.isalpha():
  8.         current_word += char.lower()
  9.     elif current_word != "":
  10.         text_words.append(current_word)
  11.         current_word = ""
  12. if current_word != "":
  13.     text_words.append(current_word)

  14. word_list = []
  15. current_word = ""
  16. for char in words:
  17.     if char.isalpha() or char == "'":
  18.         current_word += char.lower()
  19.     elif current_word != "":
  20.         word_list.append(current_word)
  21.         current_word = ""
  22. if current_word != "":
  23.     word_list.append(current_word)

  24. for word in word_list:
  25.     positions = []
  26.     for i, text_word in enumerate(text_words):
  27.         if text_word == word:
  28.             positions.append([i, i+len(word)-1])
  29.     x.extend(positions)

  30. x.sort()

  31. print(x)
复制代码


没用split,给个最佳答案呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 19:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表