2017-07-26 14 views
1

我目前正在編寫一個程序,發佈2000個字符限制的消息。我使用的字符串通常是大約10,000個字符。然而,我用來分割它的方法可以將字符串分成一個字 - 我怎樣才能在最近的空間(BEFORE)2k個字符處進行分割?每隔2000個字符在最近的管道上劃分文本

在我的代碼中,我需要調用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

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')) 
+0

但它打破了字之間的字符串也[''我的名字是。汗帕坦。所以不要。 '''','name','is','khan','patha','n' >>> res = textwrap.wrap(t,width = 5) >>> res 。 ''''''','''''] ' – user3449212

+0

'textwrap.wrap(text,width = 5,break_long_words = False)' –

+0

checked,但現在長度超出範圍'['my', 'name','is','khan','pathan','so','dont。','worry'。]' – user3449212

相關問題