小编Ben*_*ang的帖子

csv.reader()按个别字符分隔值

我有以下代码试图迭代一些项目:

这是输入(单行)

操作,SKU,ITEM_NAME,UPC,EAN,BRAND_NAME

   filename=open("WebstoreItemTemplate.csv").read()
   template=csv.reader(filename,delimiter=',')
   for row in template:
        print row
Run Code Online (Sandbox Code Playgroud)

我期待输出看起来一样,如:

['operation','sku','item_name','upc,ean','brand_name']
Run Code Online (Sandbox Code Playgroud)

相反,我收到以下输出,每个字母被视为一个列表.我已经验证该文件是csv格式,所以我不确定我做错了什么.

['o']
['p']
['e']
['r']
['a']
['t']
['i']
['o']
['n']
['', '']
['s']
['k']
['u']
['', '']
['i']
['t']
['e']
['m']
['_']
['n']
['a']
['m']
['e']
['', '']
['u']
['p']
['c']
['', '']
['e']
['a']
['n']
['', '']
['b']
['r']
['a']
['n']
['d']
['_']
['n']
['a']
['m']
['e']
Run Code Online (Sandbox Code Playgroud)

python csv

8
推荐指数
2
解决办法
2578
查看次数

将列表的pandas列转换为矩阵表示形式(一种热编码)

我有一个pandas列,其中列出了各种长度的值,如下所示:

  idx lists

    0 [1,3,4,5]
    1 [2]
    2 [3,5]
    3 [2,3,5]
Run Code Online (Sandbox Code Playgroud)

我想将它们转换成矩阵格式,其中每个可能的值代表一列,如果该值存在,则每一行填充1,否则填充0,例如:

idx  1 2 3 4 5 

  0  1 0 1 1 1
  1  0 1 0 0 0
  2  0 0 1 0 1
  3  0 1 1 0 1
Run Code Online (Sandbox Code Playgroud)

我以为这个术语是一种热编码,但是我尝试使用pd.get_dummies方法,该方法指出它可以进行一热编码,但是当我尝试提供上述输入时:

test_hot = pd.Series([[1,2,3],[3,4,5],[1,6]])
pd.get_dummies(test_hot)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/reshape.py", line 899, in get_dummies
    dtype=dtype)
  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/reshape.py", line 906, in _get_dummies_1d
    codes, levels = _factorize_from_iterable(Series(data))
  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/categorical.py", line 2515, …
Run Code Online (Sandbox Code Playgroud)

python list pandas

6
推荐指数
1
解决办法
153
查看次数

计算pandas中一列列表中值的总出现次数的更快方法?

我在 Pandas 数据框中有一列,其中包含大量标签列表:

>>> data['SPLIT'].head(10)
0    [33.23, 88.72, 38.93, E931.7, V09.0, 041.11, 5...
1    [99.04, 38.06, 39.57, 00.91, 55.69, V15.82, 27...
2    [96.04, 96.72, 401.9, 276.5, 584.9, 428.0, 507...
3    [96.6, 99.15, 99.83, V29.0, 765.15, 765.25, 77...
4    [96.71, 96.04, 54.12, 99.60, 38.93, 99.15, 53....
5    [88.72, 37.61, 39.61, 36.15, 36.12, 272.0, 401...
6    [38.93, 88.72, 37.31, 272.4, 719.46, 722.0, 31...
7    [88.72, 39.61, 35.71, 272.4, V12.59, 458.29, 7...
8    [97.44, 99.04, 88.56, 37.23, 39.95, 38.95, 00....
9    [00.14, 89.61, …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
2223
查看次数

Python Selenium - 如何提取/排除论坛帖子中的特定标签或元素?

我为论坛游戏构建了一个网络爬虫,其中玩家使用 [b] 粗体 [/b] 标签中的特定关键字来发出命令。机器人的工作是遍历线程并记录所有玩家的命令,但是我遇到了一个问题,如果玩家 A 引用玩家 B 的帖子,机器人会读取引用中玩家 B 的命令并更新玩家 A 的桌子。

我找到了引用框的具体类名,但我不知道如何从整个帖子正文中删除该类。

我尝试使用 get_attribute('innerHTML') 将帖子转换为文本,并使用正则表达式成功将其删除,但是我编写的用于提取粗体标签的代码 (find_attribute_by_tag_name) 变得无效。

我有两个问题想请教在这里发帖的各位大神:

  1. 有没有办法从帖子正文中删除特定元素?我在谷歌上进行了搜索,但找不到有效的解决方案

  2. 否则,有没有办法可以将从 get_attribute('innerHTML') 获得的 HTML 转换回元素?

def ScrapPosts( driver ):
  posts=driver.find_elements_by_class_name("postdetails")
  print("Total number of posts on this page:", len(posts))
  for post in posts:
      #print("username:",post.find_element_by_tag_name("Strong").text)
      username=post.find_element_by_tag_name("Strong").text.upper()


      #remove the quote boxes before sending to check command?
      post_txt=post.find_element_by_class_name("content")
      CheckCommand(post_txt, username)
Run Code Online (Sandbox Code Playgroud)

python selenium

0
推荐指数
1
解决办法
2766
查看次数

标签 统计

python ×4

pandas ×2

csv ×1

list ×1

selenium ×1