স্ট্রিং ফাঁকা আছে কিনা তা কীভাবে পরীক্ষা করবেন?


1414

পাইথনের খালি স্ট্রিং ভেরিয়েবলের মতো কিছু রয়েছে যেখানে আপনি এটি করতে পারেন:

if myString == string.empty:

নির্বিশেষে, খালি স্ট্রিংয়ের মানগুলি পরীক্ষা করার সর্বাধিক মার্জিত উপায় কোনটি? ""খালি স্ট্রিংটি ততটা ভাল না পরীক্ষা করার জন্য আমি প্রতিবার হার্ড কোডিং পাই find


1
কীভাবে ""ভাল না?
NoName

উত্তর:


2108

খালি স্ট্রিংগুলি "মিথ্যা" যার অর্থ এগুলি একটি বুলিয়ান প্রসঙ্গে মিথ্যা হিসাবে বিবেচিত হয়, সুতরাং আপনি কেবল এটি করতে পারেন:

if not myString:

আপনি যদি জানতে পারেন যে আপনার ভেরিয়েবলটি একটি স্ট্রিং। যদি আপনার ভেরিয়েবলটি অন্য কোনও ধরণেরও হতে পারে তবে আপনার ব্যবহার করা উচিত myString == ""। বুলিয়ান প্রসঙ্গে মিথ্যা যে অন্য মানগুলির জন্য সত্য মান পরীক্ষার ডকুমেন্টেশন দেখুন ।


183
সাবধানতা অবলম্বন করুন, যেহেতু প্রচুর অন্যান্য জিনিসও মিথ্যা।
Ignacio Vazquez-Abram 20

9
আমি এর আগে কখনও মিথ্যা কথাটি শুনিনি। এর অর্থ কি এটি মিথ্যা প্রত্যাবর্তন করে?
জোয়ান ওয়েঙ্গেজ

41
@ জোয়ান: এটি বুলিয়ান প্রসঙ্গে মিথ্যা হিসাবে মূল্যায়ন করে।
Ignacio Vazquez-Abram

54
ওপি যদি পরিবর্তনশীল একটি খালি স্ট্রিং জানতে চায়, কিন্তু আপনি লিখতে পারেন if not myString:ব্লক যদি myStringছিল None, 0, Falseইত্যাদি সুতরাং আপনি নিশ্চিত না কি ধরনের হয় যদি myStringহয়, তাহলে আপনি ব্যবহার করা উচিত if myString == "":যদি এটা একটি খালি স্ট্রিং হিসেবে বিরোধিতা নির্ধারণ কিছু অন্যান্য মিথ্যা মান।
অ্যান্ড্রু ক্লার্ক

15
@AndrewClark, যেমন একটি মামলা, একটা চেন পরিবর্তে if myString == ...এক্সপ্রেশন, আমরা ব্যবহার করতে পারে if myString in (None, '')বা @Bartek প্রতিif myString in (None, '') or not myString.strip()
স্ট্যু

411

পিইপি 8 থেকে , "প্রোগ্রামিংয়ের প্রস্তাবনাগুলি" বিভাগে :

সিকোয়েন্সগুলির জন্য, (স্ট্রিং, তালিকাগুলি, টিপলস) খালি সিকোয়েন্সগুলি মিথ্যা রয়েছে তা ব্যবহার করুন।

সুতরাং আপনার ব্যবহার করা উচিত:

if not some_string:

বা:

if some_string:

কেবল স্পষ্ট করে বলার জন্য, অনুক্রমগুলি বুলিয়ান প্রসঙ্গে মূল্যায়ন করা হয় Falseবা Trueসেগুলি খালি কিনা। এইগুলি হল সমান নয় করার Falseবা True


24
দুর্দান্ত যে আপনি পিইপি সম্পর্কিত রেফারেন্স অন্তর্ভুক্ত করেছেন!
ফেলিক্স

3
দ্রষ্টব্য: PEP প্রতিরক্ষা ইন, এক তর্ক হতে পারে বলে " এক্স মিথ্যা " (ছোট হাতের মিথ্যা ) ইতিমধ্যে তার মানে, বরং অর্থ চেয়ে x == False। তবে আইএমএইচও-র স্পষ্টতা এখনও লক্ষ্যবস্তু দর্শকদের কাছে স্বাগত।
MestreLion

232

সবচেয়ে মার্জিত উপায় সম্ভবত এটি সত্য বা মিথ্যা, উদাহরণস্বরূপ পরীক্ষা করা হবে:

if not my_string:

তবে, আপনি সাদা স্থানটি ছিনিয়ে নিতে চাইতে পারেন কারণ:

 >>> bool("")
 False
 >>> bool("   ")
 True
 >>> bool("   ".strip())
 False

তবে আপনার সম্ভবত এটিতে আরও কিছুটা স্পষ্ট হওয়া উচিত, যদি না আপনি নিশ্চিত হন না যে এই স্ট্রিংটি কিছু প্রকারের বৈধতা পেরিয়ে গেছে এবং এমন একটি স্ট্রিং যা এইভাবে পরীক্ষা করা যেতে পারে।


87

আমি স্ট্রিপিংয়ের আগে অদ্ভুততা পরীক্ষা করতাম। এছাড়াও, আমি এই সত্যটি ব্যবহার করব যে খালি স্ট্রিংগুলি মিথ্যা (বা মিথ্যা)। এই পদ্ধতির সাথে অ্যাপাচি এর স্ট্রিংস ইউটিস.আইএসব্ল্যাঙ্ক বা পেয়ারা এর স্ট্রিংস.ইসন নলআরম্পটি

এই স্ট্রিংটি যদি হয় না হয় খালি বা খালি হয় তা পরীক্ষার জন্য আমি এটি ব্যবহার করব:

def isBlank (myString):
    if myString and myString.strip():
        #myString is not None AND myString is not empty or blank
        return False
    #myString is None OR myString is empty or blank
    return True

এবং, যদি স্ট্রিং না হয় তবে একেবারে ঠিক এর বিপরীতে পরীক্ষা করা হয় না NOR খালি:

def isNotBlank (myString):
    if myString and myString.strip():
        #myString is not None AND myString is not empty or blank
        return True
    #myString is None OR myString is empty or blank
    return False

উপরের কোডটির আরও সংক্ষিপ্ত রূপগুলি:

def isBlank (myString):
    return not (myString and myString.strip())

def isNotBlank (myString):
    return bool(myString and myString.strip())

কেন না if mystring and not mystring.strip()?
মিগল

1
কিভাবে এটি থেকে আলাদা string and not string.isspace()?
Andrea Corbellini

7
যারা এই জাতীয় বিষয়গুলির বিষয়ে যত্নশীল তাদের জন্য আরও সংক্ষিপ্ত: def isBlank(s): return not (s and s.strip())এবং def isNotBlank(s): return s and s.strip()
কার্ল

48

আমি একবার বারটেকের উত্তর এবং জাভাস্ক্রিপ্টের অনুপ্রেরণার অনুরূপ কিছু লিখেছিলাম:

def is_not_blank(s):
    return bool(s and s.strip())

টেস্ট:

print is_not_blank("")    # False
print is_not_blank("   ") # False
print is_not_blank("ok")  # True
print is_not_blank(None)  # False

কেন শুধু নয়return bool(s.strip())
anilbey

1
AttributeError: 'NoneType' object has no attribute 'strip'
ভল্ট

28

এটি করার একমাত্র সত্যিকারের উপায় হ'ল:

if "".__eq__(myString):

অন্যান্য সমস্ত সমাধানের সম্ভাব্য সমস্যা এবং প্রান্তের ক্ষেত্রে রয়েছে যেখানে চেকটি ব্যর্থ হতে পারে।

len(myString)==0ব্যর্থ হতে পারে যদি myStringকোনও শ্রেণীর কোনও বস্তু যা উত্তরাধিকার সূত্রে প্রাপ্ত হয় strএবং __len__()পদ্ধতিটি ওভাররাইড করে ।

একইভাবে myString == ""এবং myString.__eq__("")যদি myStringওভাররাইড হয় __eq__()এবং ব্যর্থ হতে পারে __ne__()

কিছু কারণে ওভাররাইড "" == myStringকরলে myStringবোকাও হয় __eq__()

myString is ""এবং "" is myStringসমতুল্য। তারা উভয়ই ব্যর্থ হবে যদি myStringআসলে স্ট্রিং না হয় তবে স্ট্রিংয়ের একটি সাবক্লাস হয় (উভয়ই ফিরে আসবে False)। এছাড়াও, যেহেতু তারা পরিচয় যাচাই করে, তাদের কাজ করার একমাত্র কারণ পাইথন স্ট্রিং পুলিং (স্ট্রিং ইন্টার্নমেন্ট নামেও পরিচিত) ব্যবহার করে যা ইন্টার্নযুক্ত থাকলে স্ট্রিংয়ের একই উদাহরণ ব্যবহার করে (এখানে দেখুন: '= ব্যবহার করে স্ট্রিংগুলির তুলনা কেন হয়? = 'বা' is 'কখনও কখনও আলাদা ফলাফল দেয়? )। এবং ""সিপিথনে শুরু থেকেই ইন্টার্ন করা হয়

পরিচয় চেকের ক্ষেত্রে বড় সমস্যা হ'ল স্ট্রিং ইন্টার্নমেন্টটি (যতদূর আমি দেখতে পেলাম) এটি প্রমাণিত নয় যে কোন স্ট্রিংগুলি ইন্টার্নযুক্ত। তার অর্থ, তাত্ত্বিকভাবে ""অভ্যন্তরীণভাবে আবশ্যক নয় এবং এটি বাস্তবায়ন নির্ভর।

এই যে সত্যিই বোকা বানানো যাবে না এরকম একমাত্র উপায় শুরুতে উল্লিখিত এগুলির মধ্যে একটি: "".__eq__(myString)। যেহেতু এটি স্পষ্টভাবে __eq__()খালি স্ট্রিংয়ের পদ্ধতিটিকে কল করে এটি মাইস্ট্রিংয়ের কোনও পদ্ধতিকে ওভাররাইড করে বোকা বানানো যায় না এবং সাবক্লাসগুলির সাথে দৃly়ভাবে কাজ করে str

স্ট্রিংয়ের মিথ্যাচারের উপর নির্ভর করা যদি বস্তুটি তার __bool__()পদ্ধতিটিকে ওভাররাইড করে তবে কাজ নাও করতে পারে ।

এটি কেবল তাত্ত্বিক কাজ নয় তবে প্রকৃত ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক হতে পারে যেহেতু আমি ফ্রেমওয়ার্ক এবং লাইব্রেরিগুলি সাবক্লাসিংয়ের strআগে দেখেছি এবং ব্যবহার করে myString is ""সেখানে কোনও ভুল আউটপুট ফিরে আসতে পারে।

এছাড়াও, isস্ট্রিং পুলিং বেশ অদ্ভুত নিয়ম অনুসরণ করে যেহেতু সাধারণভাবে স্ট্রিংগুলির তুলনা করা একটি দুর্দান্ত মন্দ ফাঁদ কারণ এটি কখনও কখনও সঠিকভাবে কাজ করবে।

এটি বলেছে, বেশিরভাগ ক্ষেত্রে উল্লিখিত সমস্ত সমাধানই সঠিকভাবে কাজ করবে। এটি পোস্টটি বেশিরভাগই একাডেমিক কাজ।


2
@ সিম্প্লিউসার আপনি অবশ্যই ঠিক আছেন। বাস্তব বিশ্বে স্ট্রিংয়ের মিথ্যাচার ব্যবহার করা বা এটি একটি খালি স্ট্রিংয়ের সাথে তুলনা করা পুরোপুরি ঠিক। এই এখানে উত্তর উদ্দেশ্য উপর overkill হয়।
ডাকারন

সত্যিই, eq_ ব্যবহার করবেন ?
স্লোবোট

দুর্দান্ত কাজ করছি, আপনাকে ধন্যবাদ!
ইউজিন.পলশিকভ 21

14

খালি বা ফাঁকা স্ট্রিং পরীক্ষা করুন (ছোট উপায়):

if myString.strip():
    print("it's not an empty or blank string")
else:
    print("it's an empty or blank string")

7
যদি myString = None, এটি একটি ব্যতিক্রম উত্থাপন করবে। @ ভল্টের উত্তরটি
ডমিনিক

9

আপনি যদি খালি এবং নাল স্ট্রিংয়ের মধ্যে পার্থক্য করতে চান তবে আমি ব্যবহার করার পরামর্শ দেব if len(string), অন্যথায়, আমি if stringঅন্যরা যেমন বলেছে তেমনভাবে ব্যবহার করার পরামর্শ দিই । সাদা স্পেসে পূর্ণ স্ট্রিংগুলি সম্পর্কে সতর্কতা এখনও প্রযোজ্য, তাই ভুলে যাবেন না strip


আমি জানি না যে আপনি কেন "" ব্যবহারটি এড়াতে চান, যদি না এটি কোনওভাবে পারফরম্যান্সকে প্রভাবিত করে তবে আমি আপনার উত্তরটি লক্ষ লক্ষ কোটি লোকের সাথে পছন্দ করি কারণ এটি কম বিভ্রান্তিকর। যাইহোক, আমি উল্লেখ করতে চেয়েছিলাম যে একটি খালি তালিকাও মিথ্যা, স্পষ্টতই।
ব্রুটসর্ফুজথ্রিক্স

6

if stringname:falseস্ট্রিং ফাঁকা থাকলে একটি দেয় । আমার ধারণা এটি এর চেয়ে সহজ আর হতে পারে না।


6
a = ''
b = '   '
a.isspace() -> False
b.isspace() -> True

1
সত্যিই বুঝতে পারছেন না এই সমাধানটি কী লাভ করে। প্রশ্নটি স্ট্রিংটি খালি কিনা তা পরীক্ষার বিষয়ে। আপনি যদি সেট করে থাকেন তবে a='a'তা পাবেন a.isspace() -> Falseতবে aসেই অ্যাকাউন্টে খালি স্ট্রিং হবে না।
এড্রিয়ান কিস্টার

6

খালি স্ট্রিংটি তত ভাল না পরীক্ষা করার জন্য আমি প্রতিবার হার্ডকোডিং (sic) পেয়েছি।

পরিষ্কার কোড পদ্ধতির

এটি করা: foo == ""খুব খারাপ অনুশীলন। ""একটি icalন্দ্রজালিক মান। আপনার যাদুকরী মানগুলির বিরুদ্ধে কখনও পরীক্ষা করা উচিত নয় ( যাদুকরী সংখ্যা হিসাবে বেশি পরিচিত )

আপনার যা করা উচিত তা বর্ণনামূলক পরিবর্তনশীল নামের সাথে তুলনা করা।

বর্ণনামূলক পরিবর্তনশীল নাম

কেউ ভাবতে পারেন যে "খালি_ স্ট্রিং" একটি বর্ণনামূলক পরিবর্তনশীল নাম। এটা না

আপনি যেতে আগে এবং না empty_string = "" এবং ভাবার সাথে তুলনা করার জন্য দুর্দান্ত পরিবর্তনশীল নাম রয়েছে। "বর্ণনামূলক পরিবর্তনশীল নাম" এর অর্থ এটি নয়।

একটি ভাল বর্ণনামূলক পরিবর্তনশীল নাম এর প্রসঙ্গে ভিত্তি করে। খালি স্ট্রিংটি কী তা আপনাকে ভাবতে হবে

  • যেখানে এটি থেকে আসে.
  • কেন সেখানে আছে।
  • আপনার এটি পরীক্ষা করার দরকার নেই কেন।

সাধারণ ফর্ম ফিল্ড উদাহরণ

আপনি এমন একটি ফর্ম তৈরি করছেন যেখানে কোনও ব্যবহারকারী মান লিখতে পারে। ব্যবহারকারী কিছু লিখেছে কিনা তা আপনি পরীক্ষা করতে চান।

একটি ভাল পরিবর্তনশীল নাম হতে পারে not_filled_in

এটি কোডটিকে খুব পঠনযোগ্য করে তোলে

if formfields.name == not_filled_in:
    raise ValueError("We need your name")

পুরো CSV বিশ্লেষণ উদাহরণ

আপনি সিএসভি ফাইলগুলি বিশ্লেষণ করছেন এবং খালি স্ট্রিংটিকে পার্স করতে চান None

(যেহেতু সিএসভি সম্পূর্ণ পাঠ্য ভিত্তিক, তাই এটি উপস্থাপন করতে পারে না None এটি পূর্বনির্ধারিত কীওয়ার্ড ব্যবহার )

একটি ভাল পরিবর্তনশীল নাম হতে পারে CSV_NONE

এটি কোড পরিবর্তন এবং মানিয়ে নিতে সহজ করে তোলে আপনার যদি নতুন সিএসভি ফাইল থাকে যা এর Noneচেয়ে অন্য স্ট্রিংয়ের সাথে প্রতিনিধিত্ব করে""

if csvfield == CSV_NONE:
    csvfield = None

এই কোডটির এই অংশটি সঠিক কিনা তা নিয়ে কোনও প্রশ্ন নেই। এটি বেশ পরিষ্কার যে এটি যা করা উচিত তা করে।

এর সাথে তুলনা করুন

if csvfield == EMPTY_STRING:
    csvfield = None

এখানে প্রথম প্রশ্নটি হল, খালি স্ট্রিং কেন বিশেষ চিকিত্সার জন্য প্রাপ্য?

এটি ভবিষ্যতের কোডারদের বলবে যে একটি খালি স্ট্রিং সর্বদা হিসাবে বিবেচনা করা উচিত None

এর কারণ এটি ব্যবসায়ের যুক্তি মিশ্রিত করে (সিএসভি মানটি কী হওয়া উচিত) None কোড প্রয়োগের সাথে ) এর সাথে আমরা আসলে কী তুলনা করছি)

একটা করা প্রয়োজন উদ্বেগের বিচ্ছেদ দুই মধ্যে।


1
"" এড়ানোর জন্য কি আসলেই কি এত ঝামেলায় যেতে হবে? তুলনা প্রসঙ্গে একটি ফাঁকা স্ট্রিং এর অর্থ আর কী হতে পারে?

আমি আমার উত্তরে যেমন লিখি, CSV কোনও স্ট্রিং ব্যবহার না করে শূন্য প্রতিনিধিত্ব করতে পারে না। আপনি যদি প্রসঙ্গমুক্ত হন তবে অভিনন্দন! সর্বাধিক কোড না।
অগ্নিনির্বাপক

2
আপনি "নোট_ফিল্ড_ইন" "ফাঁকা_মালা" এর চেয়ে বেশি বর্ণনামূলক বলেছিলেন? আমি বলি আপনি উচ্চ।
টুনচে Göncüoğlu

@ TuncayGöncüoğlu "খালি স্ট্রিং" যদি বিবৃতি পরীক্ষা করে তবে কী তা বর্ণনা করে না।
অগ্নিনির্বাপক

5
আমি এই উত্তর সাথে একমত হবে। ম্যাজিক সংখ্যাগুলি খারাপ, এটি উপলব্ধি করে। সাধারণভাবে ম্যাজিক মানগুলি। কিন্তু ""একটি যাদু মান, হিসাবে একই নয় True, Falseঅথবা Noneজাদু মান নয়।
ডাকারন

5

এ কেমন? সম্ভবত এটি "সবচেয়ে মার্জিত" নয় তবে এটি বেশ সম্পূর্ণ এবং পরিষ্কার বলে মনে হচ্ছে:

if (s is None) or (str(s).strip()==""): // STRING s IS "EMPTY"...

বেশিরভাগ উদ্দেশ্যে, ফাঁকা থাকা একটি স্ট্রিং "খালি" নয়।
ক্রিস জনসন

আমি ধরে নিয়েছি আপনি সাদা জায়গা ছাড়া কিছুই বোঝায় না? আপনি আমার স্ট্রিপ () এর ব্যবহারের কথা উল্লেখ করছেন? বেশিরভাগ উদ্দেশ্যে যে খালি! S.trim () .Empty ()
বুভিন জে

আরে @ ক্রিস জনসন, আপনি কি দেখতে পেয়েছেন যে এখানে বেশিরভাগ উত্তরের পাশাপাশি স্ট্রিপ () ব্যবহার করা হয়েছে? আপনি আমাদের সবাইকে ভোট দিয়েছেন, নাকি কেবল আমাকে?
বুভিন জে

4

@ 1290 এ প্রতিক্রিয়া জানাচ্ছে। দুঃখিত, মন্তব্যগুলিতে ব্লকগুলি বিন্যাস করার কোনও উপায় নেই। Noneমান পাইথন মধ্যে একটি খালি স্ট্রিং নয়, এবং তন্ন তন্ন (ব্যবধান) হয়। অ্যান্ড্রু ক্লার্ক থেকে উত্তরটি সঠিক এগুলির মধ্যে একটি: if not myString। @ সমস্যা থেকে উত্তর অ্যাপ্লিকেশন-নির্দিষ্ট এবং ওপি-র প্রশ্নের উত্তর দেয় না। আপনি যদি "ফাঁকা" স্ট্রিংটি কী তার একটি অদ্ভুত সংজ্ঞা গ্রহণ করেন তবে আপনি সমস্যায় পড়বেন। বিশেষত, মানক আচরণটি যা str(None)উত্পাদন করে'None' , একটি ফাঁকা স্ট্রিং।

তবে যদি আপনাকে অবশ্যই None"ফাঁকা" স্ট্রিং হিসাবে বিবেচনা করে এবং (স্পেসস) করতে হয় তবে এখানে আরও একটি ভাল উপায়:

class weirdstr(str):
    def __new__(cls, content):
        return str.__new__(cls, content if content is not None else '')
    def __nonzero__(self):
        return bool(self.strip())

উদাহরণ:

>>> normal = weirdstr('word')
>>> print normal, bool(normal)
word True

>>> spaces = weirdstr('   ')
>>> print spaces, bool(spaces)
    False

>>> blank = weirdstr('')
>>> print blank, bool(blank)
 False

>>> none = weirdstr(None)
>>> print none, bool(none)
 False

>>> if not spaces:
...     print 'This is a so-called blank string'
... 
This is a so-called blank string

boolস্ট্রিংগুলির প্রত্যাশিত আচরণটি ভঙ্গ না করার সময় @ সমস্যার প্রয়োজনগুলি পূরণ করে ।


python -c "if (str(None) == 'None'): print ('OMG, WHY ??')"
ইওর্ডান জর্জিভ

3

আমি এটি মার্জিত হিসাবে এটি এটি একটি স্ট্রিং এবং এটির দৈর্ঘ্য পরীক্ষা করে তোলে তা নিশ্চিত করে তোলে:

def empty(mystring):
    assert isinstance(mystring, str)
    if len(mystring) == 0:
        return True
    else:
        return False

সতর্কতা, জালিয়াতিগুলি একটি ডিবাগিং সরঞ্জাম হিসাবে বোঝানো হয় এবং আপনি -Oপতাকাটি পাস করে বা PYTHONOPTIMIZEএনভির ভেরিয়েবল সেট করে দিলে অপ্টিমাইজড হয়ে যান ।
সাইলেন্টভয়েড

2

আর একটি সহজ উপায় হ'ল একটি সাধারণ ফাংশন সংজ্ঞায়িত করা:

def isStringEmpty(inputString):
    if len(inputString) == 0:
        return True
    else:
        return False

3
এলাচ থেকে উত্তরটি আরও সম্পূর্ণ যদি আমরা ইনপুটটি স্ট্রিং কিনা তা পরীক্ষা করতে চাই
তাঞ্জিল

1
not str(myString)

এই এক্সপ্রেশনটি খালি যে স্ট্রিংয়ের জন্য সত্য। খালি খালি স্ট্রিং, নন এবং স্ট্রিং অবজেক্টসগুলি সমস্ত মিথ্যা উত্পাদন করবে, যে সাবধানতার সাথে অবজেক্টগুলি মিথ্যা মানটি ফিরিয়ে দিয়ে এই যুক্তিকে ব্যর্থ করতে পারে __str__ __


0

পাইথনে আপনাকে এই নির্ধারণ করা খালি মান বা স্ট্রিংয়ের দিকে নজর থাকতে পারে

এটি খালি যে স্ট্রিংগুলির তুলনা করে। সুতরাং শূন্যতার সাথে পরীক্ষার পরিবর্তে not, আপনি পরীক্ষা করতে পারেন যে আপনার স্ট্রিংটি খালি স্ট্রিংয়ের সাথে খালি স্ট্রিংয়ের সমান ""...



0

আপনি যখন লাইন দ্বারা ফাইল পড়ছেন এবং নির্ধারণ করতে চান, কোন লাইনটি খালি, আপনি অবশ্যই ব্যবহার করবেন তা নিশ্চিত করুন .strip(), কারণ "খালি" লাইনে নতুন লাইন চরিত্র রয়েছে:

lines = open("my_file.log", "r").readlines()

for line in lines:
    if not line.strip():
        continue

    # your code for non-empty lines


0

আপনি যদি শুধু ব্যবহার

not var1 

এটা পার্থক্য একটি পরিবর্তনশীল যা বুলিয়ান করা সম্ভব নয় Falseএকটি খালি স্ট্রিং থেকে '':

var1 = ''
not var1
> True

var1 = False
not var1
> True

তবে, আপনি যদি আপনার স্ক্রিপ্টে একটি সাধারণ শর্ত জুড়েন তবে পার্থক্য তৈরি হয়:

var1  = False
not var1 and var1 != ''
> True

var1 = ''
not var1 and var1 != ''
> False

0

যদি কারও পক্ষে এটি দরকারী হয় তবে এখানে খালি স্ট্রিংগুলি N / A এর সাথে তালিকাগুলির তালিকাগুলি (পাইথন 2) প্রতিস্থাপন করার জন্য তৈরি একটি দ্রুত ফাংশন রয়েছে।

y = [["1","2",""],["1","4",""]]

def replace_blank_strings_in_lists_of_lists(list_of_lists):
    new_list = []
    for one_list in list_of_lists:
        new_one_list = []
        for element in one_list:
            if element:
                new_one_list.append(element)
            else:
                new_one_list.append("N/A")
        new_list.append(new_one_list)
    return new_list


x= replace_blank_strings_in_lists_of_lists(y)
print x

এটি কোনও মাইএসকিএল ডাটাবেসে তালিকার তালিকা পোস্ট করার জন্য দরকারী যা নির্দিষ্ট ক্ষেত্রের জন্য ফাঁকা গ্রহণ করে না (স্কিমায় এনএন হিসাবে চিহ্নিত ক্ষেত্রগুলি my আমার ক্ষেত্রে এটি একটি সম্মিলিত প্রাথমিক কী এর কারণে হয়েছিল)।


-1

আমি '', '', '\ n' ইত্যাদির মতো স্ট্রিংগুলির সাথে কিছু পরীক্ষা-নিরীক্ষা করেছি। আমি পাইথন ৩.6 ব্যবহার করছি। আমি এখানে যা শেষ করেছি তা এখানে:

isWhitespace = str is type(foo) and not foo.strip()
isNotWhitespace = str is type(foo) and not not foo.strip()

এটি যদি প্রয়োজন হয় তবে একটি পদ্ধতির সংজ্ঞাতে মোড়ানো।


-3

প্রমত্ত যেমন উপরে পোস্ট করেছেন তবে ভুলের সাথে।

def isNoneOrEmptyOrBlankString (myString):
    if myString:
        if not myString.strip():
            return True
        else:
            return False
    return False

শুধু পরীক্ষিত: তাঁর কোড আয় জন্য সত্য ""এবং " "এবং জন্য মিথ্যা "a"(ঠিক যেমন প্রত্যাশিত)। আপনার কোডটি খালি স্ট্রিং ব্যতীত এটি একই হিসাবে ফেরত দেয় যা সত্য নয়, কী তা করা উচিত নয়।
অ্যাবএএফচেন

sry খুব ক্লান্ত: আপনার কোড খালি স্ট্রিংয়ের জন্য মিথ্যা ফিরিয়ে দেয়।
AbcAeffchen

এই কোডটি ভুল। যদি কোনও স্ট্রিং ফাঁকা না থাকে তবে আপনি মিথ্যা ফিরিয়ে দেন।
রুবল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.