Python 哪种数据结构和/或算法适用于此问题?

Python 哪种数据结构和/或算法适用于此问题?,python,algorithm,data-structures,Python,Algorithm,Data Structures,我有一个30MB.txt文件,其中包含如下随机字符串: 416 abcd23 cd542 banana bambam 每行1个单词,单词之间用新行分隔 我需要在文件中搜索我选择的子字符串,并返回文件中所有匹配的字符串。更清楚地说: Input: cd 广义后缀树、后缀树或后缀数组是否适合此类问题,或者是否有更快的方法?(时间复杂性很重要) p、 我的编程技能有点粗略,因此任何类型的示例都将受到欢迎假设您在文件中找到包含一个字符串的字符串,那么最快的方法就是遍历文件并在每行上检查字符串函数“i

我有一个30MB.txt文件,其中包含如下随机字符串:

416
abcd23
cd542
banana
bambam
每行1个单词,单词之间用新行分隔

我需要在文件中搜索我选择的子字符串,并返回文件中所有匹配的字符串。更清楚地说:

Input: cd
广义后缀树、后缀树或后缀数组是否适合此类问题,或者是否有更快的方法?(时间复杂性很重要)


p、 我的编程技能有点粗略,因此任何类型的示例都将受到欢迎

假设您在文件中找到包含一个字符串的字符串,那么最快的方法就是遍历文件并在每行上检查字符串函数“in”或“find”,如下所示

def find_matches(filename, txt):
     with open(filename, 'r') as f:
         return [line for line in f if txt in line] # using 'in'
用法示例:

matches = find_matches('myfile.txt', 'cd')
简单地读取文件可以避免构造其他方法(如Pandas)字段的开销,也就是读取文件的开销。也:

在或查找中使用的字符串方法基本上依赖于在C中实现的优化字符串,其每字符串搜索的效率为:

看起来实现在最坏的情况下是O(N*M)(与 这是一种简单的方法),但在某些情况下可以使用O(N/M)(其中N和M是 字符串和子字符串的长度),以及中的O(N) 常见病例


你试过什么吗?@RaviSaroch正在遍历文件中的每个字符串^^@gelonida每行1个字,由新行分隔,是否附加了文件?或者文件不会更改?有一个叫做grep的程序。我修复了上面的解决方案(我希望)请注意,上面的解决方案只有在每行只有一个单词时才有效。请注明每行是否有多个单词。
matches = find_matches('myfile.txt', 'cd')