मैं प्रत्येक आइटम का पहला अक्षर लिखना चाहता हूं जबकि लाइनब्रेक वही रहता है लेकिन जब मैं सूची को स्ट्रिंग में बदलता हूं तो यह एक पंक्ति में लिखा जाता है। इस तरह "I w t w f l o e I w l s s" लेकिन मैं चाहता हूं कि आउटपुट इस तरह दिखे "I w t \n w t f l \n o e i \n w l \n s s"

r = '''I want to
write the first letter 
of every item
while linebreak
stay same'''

list_of_words = r.split()
m = [x[0] for x in list_of_words]
string = ' '.join([str(item) for item in m])
print(string)
0
Eren Kurosanoawa 11 जुलाई 2021, 15:55

4 जवाब

सबसे बढ़िया उत्तर

आप जो कर रहे हैं वह यह है कि आप सभी पंक्तियों को एक ही बार में विभाजित कर रहे हैं, इसलिए आप प्रत्येक पंक्ति की जानकारी खो रहे हैं। लाइन जानकारी को संरक्षित करने के लिए आपको सूची की सूची बनाने की आवश्यकता है।

जब आप no argument means split according to any whitespace प्रदान करते हैं, तो इसका मतलब है कि दोनों ' ' and '\n'

r = '''I want to
write the first letter 
of every item
while linebreak
stay same'''

list_of_words = [i.split() for i in r.split('\n')]
m = [[y[0] for y in x] for x in list_of_words]
string = '\n'.join([' '.join(x) for x in m])
print(string)
I w t
w t f l
o e i
w l
s s
3
Epsi95 11 जुलाई 2021, 13:03

आप क्या कर रहे हैं - प्रत्येक शब्द से पहला अक्षर प्राप्त करें सूची का और फिर उनसे जुड़ना। आप स्ट्रिंग में \n का ट्रैक नहीं रख रहे हैं।

आप इसके बजाय ऐसा कर सकते थे।

list_of_words = r.split('\n')
m = [[x[0] for x in y.split()] for y in list_of_words]
for i in m:
    string = ' '.join(i)
    print(string)
Output

I w t
w t f l
o e i
w l
s s
0
Ram 11 जुलाई 2021, 13:13

लूप के दौरान उपयोग करके समाधान यहां दिया गया है

r = '''I want to
write the first letter 
of every item
while linebreak
stay same'''


total_lines = len(r.splitlines())
line_no = 0
while line_no < total_lines:
    words_line = r.splitlines()[line_no]
    list_of_words = words_line.split()
    m = [x[0] for x in list_of_words]
    print(' '.join([str(item) for item in m]))
    line_no = line_no + 1
0
jashandeep singh 11 जुलाई 2021, 13:32

चूंकि कई वैध विधियां पहले से ही प्रदान की गई थीं, यहां str.split() के उपयोग के बिना एक ही कार्य करने का एक अच्छा और व्यापक तरीका है, जो स्मृति में अनावश्यक सूची मध्यवर्ती बनाता है (ऐसा नहीं है कि यह इस मामले में किसी भी समस्या का प्रतिनिधित्व करता है)।

निर्देशों के पूरे सेट को एक पंक्ति में वितरित करने के लिए यह विधि str.isspace() का लाभ उठाती है:

string = "".join([string[i] for i in range(len(string)) if string[i].isspace() or string[i-1].isspace() or i == 0])
0
Max Shouman 11 जुलाई 2021, 13:35