在2.7中为字符串建立适当的条件语句

时间:2014-04-10 19:00:30

标签: python string if-statement

我正在浏览各种网页,并在名为 Numbers 的字符串中提取数字集合。对于某些网页,字符串 Numbers 是空的,因为我正在寻找的内容都不在网页中。字符串 Numbers 可以是从空到10000以上的任何长度。

我的代码读取excel表格,我在字符串 Numbers 中指定我要查找的号码的位置。该位置由变量 Position 给出。我想写一个条件,告诉我 Numbers Position 位置的字符串中是否有数字,如果有,请继续执行其他命令。我的问题来自于我正在抓取的网页经常更新。因此,字符串 Numbers 会更改长度,而我在 Position 位置所寻找的内容不再存在。字符串 Numbers 可能会更短,使用以下代码会导致错误:

if Numbers[Position]:
    move on with the code
else:
    print 'no number found'

我得到了

IndexError: list index out of range

如果

  1. 字符串 Numbers 为空
  2. 字符串 Numbers
  3. 位置位置没有数字

    我想知道什么条件,适应各种场景(空字符串,更短的字符串),有类似的东西:

    如果 Numbers 位置位置有号码,请继续。它会阻止我的代码崩溃。

2 个答案:

答案 0 :(得分:0)

您可以在此处使用一些检查。

if numbers:
   # string is not empty
   try:
       print('Number at position {} is {}'.format(position, numbers[position]))
   except IndexError:
       # position doesn't exist
       print('{} does not exist in string'.format(position))
else:
   # string is empty
   print('String is empty')

如果你不想成为那个特定的,因为切片总是小于字符串的长度,你可以这样做:

if len(numbers) > position:
    print('Number at position {} is {}'.format(position, numbers[position]))
else:
    print('{} does not exist'.format(position))

答案 1 :(得分:0)

测试长度:

if len(Number) > Position:
    # Number[Position] will work

或者你可以抓住异常:

try:
    result = Number[Position]
    # get here and it worked
except IndexError:
    # nope, no such position