2012-01-15 13 views
6

में कई भागों में एक चर लंबाई स्ट्रिंग मैं एक डेटाबेस है इस डेटाबेस से खींचें एक ही लंबाई के होने जा रहे हैं)। मैं अंततः इस डेटाबेस में कई और प्रविष्टियां जोड़ूंगा, लेकिन इस समय मैं इसका परीक्षण कर रहा हूं और साथ ही शुरुआत कर रहा हूं।विभाजन अजगर

अभी, मैं स्ट्रिंग के इन ब्लॉकों आकर्षित करने और उन्हें प्रदर्शित करने के लिए निम्नलिखित अजगर कोड है:

cmd = input(Enter command:) 
sql = "SELECT cmd,`desc` FROM table WHERE cmd = '"+ cmd +"'" 
cursor.execute(sql) 
result = cursor.fetchall() 
for row in result: 
    print("Command: "+ row[0] +":\n") 
    print("Description: "+ row[1][:40] +"\n") 
    if (len(row[1]) > 40): 
     print(row[1][40:85]) 
    if (len(row[1]) > 85): 
     print(row[1][85:130]) 
    if (len(row[1]) > 130): 
     print(row[1][130:165]) 
    if (len(row[1]) > 165): 
     print(row[1][165:]) 

बंटवारे यहाँ उदाहरण के लिए, एक हद तक काम करता है:

कमान: करीब :
विवरण: यह आदेश आक्रमणकारी चार
कलाकार के लिए संदेश विंडो में
n पर 'बंद' लेकिन 0ton बना देगा। यदि स्क्रीन पर वर्तमान में कोई विंडो नहीं है, तो टी
वह स्क्रिप्ट निष्पादन समाप्त हो जाएगा।

जैसा कि आप आउटपुट के ऊपर के उदाहरण के साथ देख सकते हैं, विभाजन कुछ शब्दों को मध्य शब्द में काटने का कारण बनता है। इस तथ्य को देखते हुए कि तार कहने के बीच किसी भी लंबाई का हो सकता है ... 20 कुल पात्र और 190ish तक, और मैं स्ट्रिंग को कहने के टुकड़ों में विभाजित करना चाहता हूं ... अंतरिक्ष बाधाओं के कारण प्रत्येक 8 शब्द, मैं कैसे जाऊं ऐसा करने के बारे में?

+0

मैन्युअल रूप से एसक्यूएल स्ट्रिंग का निर्माण करने के बजाय पैरामीटर प्रतिस्थापन का उपयोग करें, उदाहरण के लिए, 'कर्सर.एक्सक्यूट (' कमांड से चुनें * जहां cmd ​​=? ', (Cmd,))। आपको 'कर्सर.फेटचॉल()' को कॉल करने की आवश्यकता नहीं है, आप इसे सीधे फिर से चालू कर सकते हैं: 'कर्सर में पंक्ति के लिए: ... ' – jfs

उत्तर

2

अलग-अलग शब्दों में रिक्त स्थान पर विभाजित करें, फिर एक समय में विभाजक के रूप में एक स्थान के साथ 8 में शामिल हों। के बजाय शब्द पात्रों अजगर textwrap मॉड्यूल का उपयोग करके

content = "This is some sentence that has more than eight words" 
content = content.split(" ") 
print content 
['This', 'is', 'some', 'sentence', 'that', 'has', 'more', 'than', 'eight', 'words'] 
print(" ".join(content[0:8])) 
This is some sentence that has more than 
+0

धन्यवाद! यह वही था जो मैं खोज रहा था, अभी के लिए। – Jguy

1

कट:

>>> import textwrap 
>>> text = 'asdd sdfdf asdsg asfgfhj' 
>>> s = textwrap.wrap(text, width=10) # <- example 10 characters 
>>> s 
['asdd sdfdf', 'asdsg', 'asfgfhj'] 
>>> print '\n'.join(s) 
asdd sdfdf 
asdsg 
asfgfhj 
>>> 
16

चेक बाहर textwrap module

>>> import textwrap 
>>> 
>>> s = "This command will create a 'close' button in the message window for the invoking character. If no window is currently on screen, the script execution will end." 
>>> 
>>> wrapped = textwrap.wrap(s, 40) 
>>> 
>>> for line in wrapped: 
...  print line 
... 
This command will create a 'close' 
button in the message window for the 
invoking character. If no window is 
currently on screen, the script 
execution will end. 

आप टेक्स्टवापर की बहुत सारी कॉन्फ़िगरेशन कर सकते हैं।

+0

टीआईएल टेक्स्टव्रैप, बहुत उपयोगी – JustinDanielson

+0

यह मौजूद है ?! पायथन मानक पुस्तकालय कभी मुझे आश्चर्यचकित नहीं करते हैं। +1 – senderle

+0

मैं काम पूरा करने के लिए एक गंदे चाल पर काम कर रहा था। मुझे नहीं पता था कि यह कुछ उपलब्ध था। मौका मिलने के बाद मैं निश्चित रूप से एक नज़र डालेगा। धन्यवाद! – Jguy

संबंधित मुद्दे