Python 如何从两组数据中打印出单个字符串?

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

本周,我刚开始学习Python,开始做一个个人项目。我正在编写的脚本的目标是从给定的新闻文章URL中提取用户ID和评论,并将它们放在一起

到目前为止,它看起来是这样的:

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