如何检查字符串是否为空或长度为零

3

我最近提出了一个问题,关于将txt文件中的值列表转换成字典列表。你可以在这个链接中查看: 在此处查看我的问题


P883, Michael Smith, 1991
L672, Jane Collins, 1992

(添加)
(这里是空行)
L322, Randy Green, 1992
H732, Justin Wood, 1995(/添加)
^键 ^姓名 ^出生年份

===============
这个问题已经得到回答,并且我使用了以下代码(接受的答案),它完美地工作:

def load(filename): students = {}

   infile = open(filename)
   for line in infile:
       line = line.strip()
       parts = [p.strip() for p in line.split(",")]
       students[parts[0]] = (parts[1], parts[2])
   return students 

然而,当txt文件中的值有空格时...(见添加部分)它就不再工作了,并且会出现一个错误,说列表索引超出范围。

1
检查字符串长度是否大于0或者检查非空真的很差劲。-1 - user2665694
4个回答

7

在 for 循环内检查空行并跳过它们:

for line in infile:
    line = line.strip()
    if not line:
        continue
    parts = [p.strip() for p in line.split(",")]
    students[parts[0]] = (parts[1], parts[2])

@MarkLakewood 我认为这假设line是一个字符串。 - yuf
@yuf:不需要假设这一点 - 因为infile是OP代码中的一个文件,所以line必须是一个字符串。 - Sven Marnach

0

检查行是否为空或长度为0非常简单:

for line in infile:
    line = line.strip()
    if line:
       do_something()

    # or

    if len(line) > 0:
        do_something()

对不起,我是一个初学者,还不熟悉大部分基本代码。 - Janezcka

0
lines = [line.split(', ') for line in file if line]
result = dict([(list[0], element_list[1:]) for line in lines if line])

-1

通过计算parts的元素数量(如果parts中的元素为零(或者一般情况下少于三个),则该行为空或无效),或者通过检查修剪后的line值是否为空字符串,来检查空行。

记住:在对动态创建的数组进行索引之前,您应该始终检查其大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接