我有一個方法,它使用Beautifulsoup從HTML文件中的標籤返回一個文本列表。 當我調用方法時,我將從方法返回的值保存到變量中。 我想一個字符串變量。
我再次調用該方法,並將返回的值存儲到不同的字符串變量中。 我想連接這兩個字符串,以便我可以在換行符上打印每一個字符串。然後,我可以將此添加到我的電子郵件例程中,以便將值打印到電子郵件中。Python TypeError:只能連接列表(不是「str」)到列表
我得到的錯誤:
Traceback (most recent call last):
File "E:/test_runners/selenium_regression_test_5_1_1/ClearCore - Regression Test/Email/email_selenium_report.py", line 43, in <module>
print rows_part1 + "/n" + rows_part2
TypeError: can only concatenate list (not "str") to list
我的方法實現:
def extract_data_from_report3(filename):
html_report_part = open(filename,'r')
soup = BeautifulSoup(html_report_part, "html.parser")
th = soup.find_all('th')
td = soup.find_all('td')
headers = [header.get_text(strip=True) for header in soup.find_all("th")]
rows = [dict(zip(headers, [td.get_text(strip=True) for td in row.find_all("td")]))
for row in soup.find_all("tr")[1:-1]]
print(rows)
return rows
要調用的方法如下:
rows_part1 = report.extract_data_from_report3(r"E:\test_runners\selenium_regression_test_5_1_1\TestReport\SeleniumTestReport_part1.html")
print "part1 = "
print rows_part1
rows_part2 = report.extract_data_from_report3(r"E:\test_runners\selenium_regression_test_5_1_1\TestReport\SeleniumTestReport_part2.html")
print "part2 = "
print rows_part2
print rows_part1 + "/n" + rows_part2
在rows_part1值是:
part1 =
[{u'Success': u'219', u'Skip': u'0', u'Error': u'9', u'Fail': u'1', u'Total': u'229', u'Class': u'Regression_TestCase.RegressionProject_TestCase2.RegressionProject_TestCase2'}]
在rows_part2的值是:
part2 =
[{u'Success': u'21', u'Skip': u'0', u'Error': u'10', u'Fail': u'5', u'Total': u'230', u'Class': u'Regression_TestCase.RegressionProject_TestCase2.RegressionProject_TestCase2'}]
我想打印出rows_part 1的值,然後在一個新行打印出rows_part2的值。 我連接它,所以我可以把一個變量放在電子郵件正文中,它會打印出值。
或者我如何從列表中提取內容並將其附加到字符串變量? 我可以打印出字符串變量。
感謝, 里亞茲
是的,這很好,我需要把你的列表對象變成字符串(列表)。這現在起作用。謝謝。 –
請注意,對於字符串版本,您無法對它們進行迭代,或者無法對列表進行任何操作。此外,這不是一個容易顛倒的過程,list(str)將只是用整個字符串創建一個項目列表 –