每隔2000个字符在最近的管道上分区文本

时间:2017-07-26 10:30:52

标签: python string encoding substr

我目前正在编写一个程序,用于发布限制为2,000个字符的邮件。我正在使用的字符串通常约为10,000个字符。但是,我用来分割它的方法可以将字符串分成一个单词的中间 - 我怎么才能将它除以最近的空格(BEFORE)2k个字符?

在我的代码中,我需要以evey 2000个字符调用API。但有时输入文字大小> 5000。

然而,简单的子字符串分区将文本放在单词的中间。因此它是印地文文本,我想将它拆分为最近的“。”字符。我已经为此写了这个逻辑。这是对的吗?

# -*- coding: utf-8 -*-
text = " ( नई दिल्ली केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की है. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ. सीबीआई ने 3 एफआईआर दर्ज की है, जिनमें 111 विमानों की खरीद, विमानों को पट्टे पर देना और एयर इंडिया द्वारा मुनाफे वाले हवाई मार्गों को छोड़ने की जांच शामिल है. गौरतलब है कि मार्च 2007 में तत्कालीन यूपीए सरकार ने सरकारी विमानन कंपनी एयर इंडिया और इंडियन एयरलाइन्स के विलय को फाइनल मंजूरी दी थी. नई एयरलाइन में दोनों के करीब 120 विमान और 30 हजार से ज्यादा कर्मचारी एक हो गए. हालांकि एयरलाइन के सरकारी स्वरूप में बदलाव नहीं हुआ. अनुमानों के मुताबिक एयर इंडिया पर 52,000 करोड़ रुपये की देनदारी है जिसमें से अकेले ब्याज ही 4,000 करोड़ रुपये सालाना है. बीते पांच सालों में सरकार ने सार्वजनिक क्षेत्र की इस एयरलाइन को 25,000 करोड़ रुपये दिए हैं और 2032 तक इतनी ही रकम और दिए जाने की बात है. इन सभी प्रयासों के बावजूद भी एयर इंडिया को सालाना 3,000 करोड़ रुपये का घाटा हो रहा है. अधिकारियों का मानना है कि कंपनी की मौजूदा हालत के लिए एयर इंडिया-इंडियन एयरलाइंस का विलय भी जिम्मेदार है. )(केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.) ( नई दिल्ली केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की है. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ. सीबीआई ने 3 एफआईआर दर्ज की है, जिनमें 111 विमानों की खरीद, विमानों को पट्टे पर देना और एयर इंडिया द्वारा मुनाफे वाले हवाई मार्गों को छोड़ने की जांच शामिल है. गौरतलब है कि मार्च 2007 में तत्कालीन यूपीए सरकार ने सरकारी विमानन कंपनी एयर इंडिया और इंडियन एयरलाइन्स के विलय को फाइनल मंजूरी दी थी. नई एयरलाइन में दोनों के करीब 120 विमान और 30 हजार से ज्यादा कर्मचारी एक हो गए. हालांकि एयरलाइन के सरकारी स्वरूप में बदलाव नहीं हुआ. अनुमानों के मुताबिक एयर इंडिया पर 52,000 करोड़ रुपये की देनदारी है जिसमें से अकेले ब्याज ही 4,000 करोड़ रुपये सालाना है. बीते पांच सालों में सरकार ने सार्वजनिक क्षेत्र की इस एयरलाइन को 25,000 करोड़ रुपये दिए हैं और 2032 तक इतनी ही रकम और दिए जाने की बात है. इन सभी प्रयासों के बावजूद भी एयर इंडिया को सालाना 3,000 करोड़ रुपये का घाटा हो रहा है. अधिकारियों का मानना है कि कंपनी की मौजूदा हालत के लिए एयर इंडिया-इंडियन एयरलाइंस का विलय भी जिम्मेदार है. )(केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.)"
import re
text = re.sub(r"(?<!\d)\.|\.(?!\d)", '। ',text)
text = text.decode("utf-8")

def split_message(message, character_limit=2000):
    messages = []

    while len(message) > character_limit:
        split_index = message[:character_limit].rfind("।".decode("utf-8"))
        if split_index == -1:
            # No । found, just split at the character limit
            split_index = character_limit
        else:
            # Else space is found, split after the space
            split_index += 1
        messages.append(message[:split_index])
        message = message[split_index:] 

    messages.append(message)
    return messages

res = split_message(text)
for val in res:
    print val.encode("utf-8")

1 个答案:

答案 0 :(得分:1)

Python有一个textwrap模块可以帮到你。 https://docs.python.org/2/library/textwrap.html

import textwrap

text = " ( नई दिल्ली केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की है. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ. सीबीआई ने 3 एफआईआर दर्ज की है, जिनमें 111 विमानों की खरीद, विमानों को पट्टे पर देना और एयर इंडिया द्वारा मुनाफे वाले हवाई मार्गों को छोड़ने की जांच शामिल है. गौरतलब है कि मार्च 2007 में तत्कालीन यूपीए सरकार ने सरकारी विमानन कंपनी एयर इंडिया और इंडियन एयरलाइन्स के विलय को फाइनल मंजूरी दी थी. नई एयरलाइन में दोनों के करीब 120 विमान और 30 हजार से ज्यादा कर्मचारी एक हो गए. हालांकि एयरलाइन के सरकारी स्वरूप में बदलाव नहीं हुआ. अनुमानों के मुताबिक एयर इंडिया पर 52,000 करोड़ रुपये की देनदारी है जिसमें से अकेले ब्याज ही 4,000 करोड़ रुपये सालाना है. बीते पांच सालों में सरकार ने सार्वजनिक क्षेत्र की इस एयरलाइन को 25,000 करोड़ रुपये दिए हैं और 2032 तक इतनी ही रकम और दिए जाने की बात है. इन सभी प्रयासों के बावजूद भी एयर इंडिया को सालाना 3,000 करोड़ रुपये का घाटा हो रहा है. अधिकारियों का मानना है कि कंपनी की मौजूदा हालत के लिए एयर इंडिया-इंडियन एयरलाइंस का विलय भी जिम्मेदार है. )(केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.) ( नई दिल्ली केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की है. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ. सीबीआई ने 3 एफआईआर दर्ज की है, जिनमें 111 विमानों की खरीद, विमानों को पट्टे पर देना और एयर इंडिया द्वारा मुनाफे वाले हवाई मार्गों को छोड़ने की जांच शामिल है. गौरतलब है कि मार्च 2007 में तत्कालीन यूपीए सरकार ने सरकारी विमानन कंपनी एयर इंडिया और इंडियन एयरलाइन्स के विलय को फाइनल मंजूरी दी थी. नई एयरलाइन में दोनों के करीब 120 विमान और 30 हजार से ज्यादा कर्मचारी एक हो गए. हालांकि एयरलाइन के सरकारी स्वरूप में बदलाव नहीं हुआ. अनुमानों के मुताबिक एयर इंडिया पर 52,000 करोड़ रुपये की देनदारी है जिसमें से अकेले ब्याज ही 4,000 करोड़ रुपये सालाना है. बीते पांच सालों में सरकार ने सार्वजनिक क्षेत्र की इस एयरलाइन को 25,000 करोड़ रुपये दिए हैं और 2032 तक इतनी ही रकम और दिए जाने की बात है. इन सभी प्रयासों के बावजूद भी एयर इंडिया को सालाना 3,000 करोड़ रुपये का घाटा हो रहा है. अधिकारियों का मानना है कि कंपनी की मौजूदा हालत के लिए एयर इंडिया-इंडियन एयरलाइंस का विलय भी जिम्मेदार है. )(केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.केंद्रीय जांच ब्यूरो (सीबीआई) ने एयर इंडिया और इंडियन एयरलाइंस के विलय से जुड़े मामलों की पड़ताल के लिए एफआईआर दर्ज की. सीबीआई का आरोप है कि दोनों एयरलाइंस के विलय की वजह से करोड़ों रुपये का नुकसान हुआ.)"

text = text.decode("utf-8")

result = textwrap.wrap(text, width=2000)

for line in result:
    print(line.encode('utf-8'))