[英]Python list item printing with brackets
我试图在while循环中尝试同时打印这些值...
数据[0]和str(数据[0])
此数据使用列表[]括号打印的问题,如果我在将变量传递到列表之前直接打印该变量,则不会发生这种情况-在功能上我必须为此程序执行
我的代码:
# 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.