पायथन 3 में लाखों रेगेक्स प्रतिस्थापनों को गति दें

| | | | | | | | | | | | | |

मेरे पास दो सूचियां हैं:

  • लगभग 750K की एक सूची "वाक्य" (लंबी तार)
  • लगभग 20K "शब्दों" की एक सूची जिसे मैं अपने 750K वाक्यों से हटाना चाहता हूं

तो, मेरे पास है 750K वाक्य के माध्यम से लूप करने के लिए और लगभग 20K प्रतिस्थापन करने के लिए, लेकिन केवल तभी जब मेरे शब्द वास्तव में "शब्द" हैं और वर्णों की एक बड़ी स्ट्रिंग का हिस्सा नहीं हैं।

मैं अपने शब्दों को पूर्व-संकलित करके ऐसा कर रहा हूं ताकि वे शब्द-सीमा मेटाचरित्र से जुड़े रहें:

compiled_words = [re.compile(r"" + word + r"") my20000words में वर्ड के लिए] 

फिर मैं अपने " वाक्य":

वाक्य में वाक्य के लिए पुन: आयात करें: संकलित_शब्दों में शब्द के लिए: वाक्य = re.sub(word, "", वाक्य) # वाक्य को बढ़ते हुए में डालें सूची 

यह नेस्टेड लूप लगभग 50 वाक्यों को संसाधित कर रहा है es प्रति सेकंड, जो अच्छा है, लेकिन मेरे सभी वाक्यों को संसाधित करने में अभी भी कई घंटे लगते हैं।

  • क्या str. प्रतिस्थापित करें विधि (जो मुझे लगता है कि तेज़ है), लेकिन फिर भी यह आवश्यक है कि प्रतिस्थापन केवल शब्द सीमाओं पर हो?

  • वैकल्पिक रूप से, क्या वहाँ है re.sub विधि को गति देने का एक तरीका? यदि मेरे शब्द की लंबाई > मेरे वाक्य की लंबाई की तुलना में, लेकिन यह बहुत अधिक सुधार नहीं है।

मैं पायथन 3.5.2 का उपयोग कर रहा हूं