Python 如何从两组数据中打印出单个字符串?
本周,我刚开始学习Python,开始做一个个人项目。我正在编写的脚本的目标是从给定的新闻文章URL中提取用户ID和评论,并将它们放在一起 到目前为止,它看起来是这样的:Python 如何从两组数据中打印出单个字符串?,python,selenium,Python,Selenium,本周,我刚开始学习Python,开始做一个个人项目。我正在编写的脚本的目标是从给定的新闻文章URL中提取用户ID和评论,并将它们放在一起 到目前为止,它看起来是这样的: from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdrive
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
articleurl = "http://news.nate.com/view/20170401n02609?mid=n1008"
articleid = articleurl[26:40]
print(articleid)
commentslink = "http://comm.news.nate.com/Comment/ArticleComment/list?artc_sq=" + articleid + "&prebest=0&order=O&mid=n1008&domain=&argList=0"
commentslink2 = "http://comm.news.nate.com/Comment/ArticleComment/list?artc_sq=" + articleid + "&order=O&cmtr_fl=0&prebest=0&clean_idx=&user_nm=&fold=&mid=n1008&domain=&argList=0&return_sq=&twitterAuth=N&connectAuth=N&page=2#comment"
print(commentslink)
print(commentslink2)
chrome_path = r"F:\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get(commentslink)
userlist = []
commentlist = []
usernames = (driver.find_elements_by_class_name("""nameui"""))
for userid in usernames:
userlist += userid.text
userlist.append(userid.text)
print(userid.text)
comments = (driver.find_elements_by_class_name("""usertxt"""))
for comment in comments:
commentlist += comment.text
commentlist.append(comment.text)
print(comment.text)
但是,控制台会显示完整的用户ID列表,后面是完整的注释列表。我希望用户的评论紧跟在用户ID之后。现在,控制台会告诉我:
(1) bong****
(2) yang****
(3) hide****
... (continues through rest of user ID list)
(1) 어려보이고 싶어하는 순간 나이 먹은거래...
(2) 예능안보내는 이유가 있었네
(3) 드럽게 재미없네
... (continues through rest of comment list)
我一直试图让它看起来像这样(数字是为了清晰):
我一直在努力解决这个问题,但我所做的一切都没有奏效。我认为问题在于变量或for循环的编码方式。有没有办法解决这个问题
任何帮助都将不胜感激,谢谢 zip()函数返回元组列表,其中第i个元组包含每个参数序列或iterables中的第i个元素
finalResult = list(zip(userlist, commentlist))
print(finalResult)
使用append()
和zip()
:
以下是append()
和+=
之间的区别:
data1 = []
data2 = []
data1 += "hello"
data2.append("hello")
print(data1)
print(data2)
--output:--
['h', 'e', 'l', 'l', 'o']
['hello']
可以将字符串视为字符列表<代码>+=指示python获取右侧列表中的每个元素,并将其添加到左侧列表中。另一方面,append()
如果你的结局是这样的:
userlist = [
"user1",
"user2",
"user1",
"user3",
"user2",
"user1"
]
commentlist = [
"Hello",
"Goodbye",
"Yellow",
"Blue",
"Red",
"Clouds"
]
如果需要,您可以这样做:
import itertools as iter
userlist = [
"user1",
"user2",
"user1",
"user3",
"user2",
"user1"
]
commentlist = [
"Hello",
"Goodbye",
"Yellow",
"Blue",
"Red",
"Clouds"
]
results = list(zip(userlist, commentlist))
sorted_results = sorted(results)
print(sorted_results)
for user, group in iter.groupby(sorted_results, lambda t: t[0]):
print("{}:".format(user) )
for tuple_ in group:
print("\t{}".format(tuple_[1]) )
--output:--
[('user1', 'Clouds'), ('user1', 'Hello'), ('user1', 'Yellow'), ('user2', 'Goodbye'), ('user2', 'Red'), ('user3', 'Blue')]
user1:
Clouds
Hello
Yellow
user2:
Goodbye
Red
user3:
Blue
顺便说一下,“nameui”
相当于“nameui”
和“nameui”
,所以不用麻烦使用三重双引号。三引号字符串用于多行字符串
另外,除非您正在做更复杂的事情,比如单击链接,否则您可以使用或刮取网页。控制台给出了相同的结果,并在末尾添加了一个“”。@jrmymmj,在获得用户列表和评论列表后,使用zip()然后打印出来。@jrmymmj,print(list(zip(userlist,commentlist))
@jrmymmj,zip()函数返回元组列表,--不在python 3.x中。@jyotish,请查看python文档:
userlist = [
"user1",
"user2",
"user1",
"user3",
"user2",
"user1"
]
commentlist = [
"Hello",
"Goodbye",
"Yellow",
"Blue",
"Red",
"Clouds"
]
import itertools as iter
userlist = [
"user1",
"user2",
"user1",
"user3",
"user2",
"user1"
]
commentlist = [
"Hello",
"Goodbye",
"Yellow",
"Blue",
"Red",
"Clouds"
]
results = list(zip(userlist, commentlist))
sorted_results = sorted(results)
print(sorted_results)
for user, group in iter.groupby(sorted_results, lambda t: t[0]):
print("{}:".format(user) )
for tuple_ in group:
print("\t{}".format(tuple_[1]) )
--output:--
[('user1', 'Clouds'), ('user1', 'Hello'), ('user1', 'Yellow'), ('user2', 'Goodbye'), ('user2', 'Red'), ('user3', 'Blue')]
user1:
Clouds
Hello
Yellow
user2:
Goodbye
Red
user3:
Blue