পাইথনে লাইনে লম্বা মাল্টলাইন স্ট্রিং লাইনটি কীভাবে পড়তে হয়


86

আমার কাছে অনেকগুলি লাইনযুক্ত একটি স্ট্রিংয়ের প্রাচীর রয়েছে। আমি কীভাবে একটি forধারা দিয়ে লাইনগুলি পড়তে পারি ? এখানে আমি যা করার চেষ্টা করছি তা এখানেই রয়েছে এবং for line in textDataলাইনে উল্লেখ করা পাঠ্য ডেটা ভেরিতে আমি একটি ত্রুটি পেয়েছি ।

for line in textData
    print line
    lineResult = libLAPFF.parseLine(line)

টেক্সটডেটা ভেরিয়েবলের অস্তিত্ব রয়েছে, আমি এটি নিচে যাওয়ার আগে মুদ্রণ করি, তবে আমি মনে করি যে প্রাক-সংকলকটি ত্রুটিটিকে লাথি মারছে।

টিআইএ

ডেনিস


আপনার লাইনটি পৃথক স্ট্রিংয়ে বিভক্ত করতে হবে। এতে একটি "/ n" থাকায় এটি আলাদা স্ট্রিং তৈরি করে না।
N_A

আপনি কী ত্রুটি পাচ্ছেন (ট্রেসব্যাক সহ)? মূল্য কি textData? আপনি কি আমাদের একটি এসএসসিসিই দিতে পারেন , এমন কিছু যা আমরা চালাতে পারি এবং আপনার মতো একই সমস্যাটি দেখতে পারি তাই আমরা এটি আপনাকে ব্যাখ্যা করতে পারি?
অবার্নার্ট

এছাড়াও, "প্রাক-সংকলক" কী বলে আপনি মনে করেন "ত্রুটি লাথি মারছে"?
45 এ অবতরণ

উত্তর:


147

ব্যবহার সম্পর্কে কি .splitlines()?

for line in textData.splitlines():
    print(line)
    lineResult = libLAPFF.parseLine(line)

@ বেনজামিন গ্রুয়েনবাউম: "/r"এবং "/n"স্ল্যাশ এবং একটি অক্ষর সমন্বিত কেবলমাত্র দুটি চরিত্রের স্ট্রিং। মানে "\n"?
অবতারিত

এটি একটি অনুলিপি বা একটি পুনরাবৃত্তি?
ব্যবহারকারী3226167

@ user3226167 এটি একটি তালিকা ফেরত দেয় ।
বেনিয়ামিন গ্রুইনবাউম

স্প্লিটলাইনগুলির একটি পুনরাবৃত্ত সংস্করণ রয়েছে যা তালিকা তৈরি করবে না, পরিবর্তে পুনরায় পুনরায় পাঠকটিতে ফিরে আসবে?
Youda008

স্ট্রিংআইও রয়েছে তবে এটি নিম্ন স্তরের ইন্টারফেস। এটি এই ক্ষেত্রে বলেছে যে আপনার কাছে ইতিমধ্যে একটি স্ট্রিং রয়েছে - যদি আপনি কোনও পুনরুক্তি করতে চান (উদাহরণস্বরূপ একটি ফাইল) লাইন দ্বারা লাইন যা অন্য প্রশ্ন। মনে রাখবেন - এই ক্ষেত্রে আপনার ইতিমধ্যে একটি স্ট্রিং রয়েছে have
বেনিয়ামিন গ্রুইনবাউম

6

নতুন লাইনের সাথে বিভক্ত হয়ে।

for line in wallop_of_a_string_with_many_lines.split('\n'):
  #do_something..

যদি আপনি কোনও স্ট্রিং দিয়ে পুনরাবৃত্তি করেন তবে আপনি সেই স্ট্রিংয়ে চর দ্বারা চরটি পুনরাবৃত্তি করছেন, লাইনের মাধ্যমে নয়।

>>>string = 'abc'
>>>for line in string:
    print line

a
b
c

এখনই যে কেউ এটি পড়ছেন, তার পরিবর্তে str.splitlines () ফাংশনটি ব্যবহার করুন। কিছু সমাধান ক্ষেত্রে এই সমাধান সঙ্গে উত্থাপিত হয়। প্রাক্তন জন্য। বলুন যে আপনি প্রতিটি লাইনের উপরে পুনরাবৃত্তি করছেন, যদি অবজেক্টের চূড়ান্ত লাইনের শেষে যদি \ n থাকে তবে আপনার জন্য লুপ চেষ্টা করবে এবং ত্রুটি সৃষ্টির কারণে খালি লাইনে একটি কার্য সম্পাদন করবে। গৃহীত সমাধানে উপরে আলোচনা করা হয়েছে।
thefrollickingnerd

1

এই উত্তরটি বেশ কয়েকটি প্রান্তের ক্ষেত্রে ব্যর্থ হয় (মন্তব্য দেখুন)। উপরে গৃহীত সমাধানগুলি এগুলি পরিচালনা করবে। str.splitlines()যাবার উপায় আমি এই উত্তরটি তবুও রেফারেন্স হিসাবে রেখে দেব।

পুরানো (ভুল) উত্তর:

s =  \
"""line1
line2
line3
"""

lines = s.split('\n')
print(lines)
for line in lines:
    print(line)

আপনাকে ধন্যবাদ, @ পিআর আপনি আমাকে কিছু শিখিয়েছিলেন। import re
DKean

কেন আপনি (বা ) এর re.splitপরিবর্তে কেবল নিউলাইন চরিত্রগুলিতে বিভাজন করতে ব্যবহার করবেন ? একটি একক, স্থির, আক্ষরিক চরিত্রের বাইরে নিয়মিত ভাব প্রকাশ করা কেবল অকারণে বিষয়গুলিকে আরও জটিল করে তুলছে। str.splitsplitlines
অবার্নার্ট

@ পিপি আগের আলোচনার সাথে মানিয়ে নিতে, আমি মনে করি আপনার s.split ('\ n') লেখা উচিত ছিল। R '\ n' দিয়ে বিভাজন কাজ করে না।
ডেভিড এপস্টেইন

আমার কোডের অনুলিপি এবং পেস্ট কাজ করে (কেবল এটি চেষ্টা করে)। তবে এখন এটি দেখতে (3 বছর পরে, আমি স্রেফ ব্যবহার করতে পারতাম s.splitnow এখনই এটি পরিবর্তন করা হচ্ছে
PR

4
split('\n')\rস্টিংয়ের মধ্যে যে কোনও অক্ষর ধরে রাখবে । গাড়ীর রিটার্ন মুছে ফেলা হবে না, যা সমস্যা হতে পারে।
টুথপিক অ্যানিমোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.