繁体   English   中英

带括号的Python列表项打印

[英]Python list item printing with brackets

  1. 我启动了一系列带有值的变量
  2. 我将这些变量放在列表中
  3. 我试图在while循环中尝试同时打印这些值...

    数据[0]和str(数据[0])

  4. 此数据使用列表[]括号打印的问题,如果我在将变量传递到列表之前直接打印该变量,则不会发生这种情况-在功能上我必须为此程序执行

我的代码:

# initiate data 

    # personal info
        businessName = "//*[@id='BusinessName']"
        firstName = "//*[@id='BusinesOwnersFirstName']"
        lastName = "//*[@id='BusinesOwnersLastName']"
        ubi = "//*[@id='UBINumber']"
        info = "//*[@id='persInfoContainer']"

    # liscensing info
        licenseType = "//*[@id='LicenseType']"
        specialties = "//*[@id='layoutContainer']/div[5]/div[6]/label[1]"
        licenseNumber = "//*[@id='LicenseNumber']"
        licenseEffectiveDate = "//*[@id='EffectiveDate']"
        licenseExpirationDate = "//*[@id='ExpirationDate']']/div[5]/div[6]/label[2]"
        status = "//*[@id='StatusDescription']"

    # bond info
        bondProvider = "//*[@id='BondsCompanyName']"
        bondNumber = "//*[@id='BondAccountNumber']"
        bondAmount = "//*[@id='BondAmount']"
        bondEffectiveDate = "//*[@id='BondsEffectiveDate']"
        bondExpirationDate = "//*[@id='BondsExpirationDate']" 

        # insurance info
        insuranceProvider = "//*[@id='InsurancesFirmName']"
        insuranceNumber = "//*[@id='InsurancesAccountId']"
        insuranceAmount = "//*[@id='InsurancesAmount']"
        insuranceEffectiveDate = "//*[@id='InsurancesEffectiveDate']"
        insuranceExpirationDate = "//*[@id='InsurancesExpirationDate']"


# -------------------------------------------------------------------------------------   

# data list
# -------------------------------------------------------------------------------------   
        data = [
        [businessName],[firstName],[lastName],[ubi],[info],
        [licenseType],[specialties],[licenseNumber],[licenseEffectiveDate],[licenseExpirationDate],[status],
        [bondProvider],[bondNumber],[bondAmount],[bondEffectiveDate],[bondEffectiveDate],[insuranceProvider],
        [insuranceNumber],[insuranceAmount],[insuranceEffectiveDate],[insuranceExpirationDate]
        ] 

        # print data


# needed logic outlne:
#     get list 
#         loop thorugh checking is xpath is available
#             if not available set dataOut to ""
#             else get xpathData and set dataOut to xpathData
#                 export to csv file




# -------------------------------------------------------------------------------------

# xpath check and grab function
# -------------------------------------------------------------------------------------

        i = 0
        l = len(data)-1
        while (i <= l):
            print "string: "+ str(data[0])
            print "non-string: "+ data[0]
            try:
                # self.browser.find_element_by_xpath(data[i]) #checks is xpath exists
                # return True
                result = browser.find_element_by_xpath(data[0]).text
                print "result"+result
            except:
                # return False
                print "ERROR: empty xpath"
            i += 1

我的输出(在命令行中):

string: ["//*[@id='BusinessName']"]
print "non-string: "+ data[0]
TypeError: cannot concatenate 'str' and 'list' objects

由于某种原因,您将每个字符串放入单例list ,因此(如错误所示) data[0]本身就是一个list 如果您希望该字符串包含在该list ,请使用data[0][0] (或需要添加任何适当的索引,假设您曾经将data添加到list s中)进行访问。 你可以使用任何+或者,这一个。

print "non-string: " + data[0][0]

您还可以通过使每个对象分别print (使用,而不是+ )来处理对象本身,而不用尝试将它们串联起来:

print "non-string:", data[0]

请注意,这将导致打印出一个list ,并用方括号括起来,例如non-string: ["//*[@id='BusinessName']"]

但是,我建议按以下步骤删除这些单例list (除非出于某些原因您确实需要它们):

data = [
    businessName, firstName, ...

然后data[0]将是一个字符串。

如果您要打印列表,连接字符串或将元素发送到函数find.element_by_x_path中,您的问题会有些混乱,但是我会尽力而为。 它还取决于您使用的是哪个Python版本(推荐Python 3 :))您将收到TypeError,因为Python无法连接字符串和列表对象。 如果只想打印数据列表,请使用简单的“ for”循环

for item in data:
   print (item)

如果您想在上面的while循环中连接,请尝试类似

for string in data: # Takes list into iterable objects
    newstring = string + "something here"
    print (string)

您还可以使用Python内置的“类型”来帮助您确定变量,以确保将要传递的内容传递给find.element_by_xpath

type(data)
<<<    <class 'list'>

另外,在创建列表“ [] []”的字符串类型时,可能会出现索引错误

尝试将输入切换为data [0] [0]或通过Python的type命令运行它,以查看是否正是您想要的

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM