小编Way*_*ner的帖子

如何使用lxml删除html实体(以及更多)?

我有一个有一些文字,看起来像这样一个HTML文件(通过它运行后lxml.html parse,lxml.html clean和这的结果etree.tostring(table, pretty_print=True))

 <tr><td>&#13;
224&#13;
9:00 am&#13;
-3:00 pm&#13;
NPHC Leadership</td>&#13;
<td>&#13;
<font>ALSO IN 223; WALL OPEN</font></td>&#13;
Run Code Online (Sandbox Code Playgroud)

我在lxml上找到的文档有点不稳定.我已经能够做到相当多的去了这一点,但我想这样做是去掉除了所有的标签<table>,<td><tr>.我还想从这些标签中删除所有属性,我也想摆脱实体,例如&#13;.

要删除当前使用的属性:

    etree.strip_attributes(tree, 'width', 'href', 'style', 'onchange',
                           'ondblclick', 'class', 'colspan', 'cols',
                           'border', 'align', 'color', 'value',
                           'cellpadding', 'nowrap', 'selected',
                           'cellspacing')
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但似乎应该有一个更好的方法.似乎应该有一些相当简单的方法来做我想要的,但我找不到任何适合我的例子.

我尝试过使用Cleaner,但是当我通过它时allow_tags,像这样:

错误:Cleaner(allow_tags=['table', 'td', 'tr']).clean_html(tree)它给了我这个错误:

ValueError: It does not make sense to pass in both allow_tags and remove_unknown_tags.另外,当我添加时,remove_unkown_tags=False我收到此错误: …

python lxml html-parsing

5
推荐指数
1
解决办法
4579
查看次数

让git分支"变老"有什么害处吗?

所以我听说过使用Git 的每个功能分支工作流程,我也读到了为什么这可能是一个坏主意的一些原因.

我真正的问题是 - 如果我正在开发一个小功能(如简单的正则表达式时间解析器),在将此分支合并回主干之后,该分支会发生什么(或应该发生什么)?它只是坐在那里吗?因为我为那个非常具体的功能创建了它,所以我想不出有一个原因我必须回去使用分支.我应该以某种方式将这个分支标记为已经不存在,或者我只是继续前进而忘记它?

谢谢

git git-branch

5
推荐指数
1
解决办法
1241
查看次数

使用printf不一致

我在GNU GCC编译器中使用Code Block.我正在尝试这个代码

int number,temp;

printf("Enter a number :");
scanf("%d",&number);
temp = sqrt(number);
printf("\n%d",sqrt(number)); //print 987388755 -- > wrong result
printf("\n%d",temp); //print 3 -- > write result

return 0;
Run Code Online (Sandbox Code Playgroud)

并且在此代码中有输入值10的结果

987388755  
3
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

c function sqrt

5
推荐指数
2
解决办法
212
查看次数

Python3 json.dumps给出了TypeError:键必须是一个字符串

我有一个用Python3编写的简单Web服务器(使用类http.server),我将从2移植到3.

我有以下代码:

# More code here...
postvars = cgi.parse_qs(self.rfile.read(length),
                        keep_blank_values=1)
something.json_run(json.dumps(postvars))
Run Code Online (Sandbox Code Playgroud)

哪个投掷:

TypeError: keys must be a string
Run Code Online (Sandbox Code Playgroud)

通过检查数据,我已经确定parse_qs似乎将密钥编码为字节,这就是抛出错误(json显然不喜欢字节).

import json
json.dumps({b'Throws error' : [b"Keys must be a string"]})
json.dumps({'Also throws error': [b'TypeError, is not JSON serializable']})
json.dumps({'This works': ['No bytes!']})
Run Code Online (Sandbox Code Playgroud)

这里最好的解决方案是什么?使用Python 2,代码工作正常,因为parse_qs使用str而不是bytes.我最初的想法是我可能需要编写一个JSON序列化程序.并不是说这么简单的事情很困难,但我不愿意,如果我能用其他方式做到这一点(例如将字典翻译为使用字符串而不是字节).

python json python-3.x

5
推荐指数
1
解决办法
2857
查看次数

我应该如何表明尚未在Python中编写测试?

我正在使用Python和unittest模块进行TDD .在NUnit中你可以Assert.Inconclusive("This test hasn't been written yet").

到目前为止,我还没有在Python中找到类似的东西来表示"这些测试只是占位符,我需要回来并实际将代码放入其中."

这是否有Pythonic模式?

python tdd unit-testing

5
推荐指数
1
解决办法
642
查看次数

使用Flask-WTForms选择性地需要字段的正确方法是什么?

我正在使用Flask与Flask-WTForms,我正在编写一个管理页面,可以更新用户的值 - 包括密码.

我正在使用我用于注册的相同表单页面,但由于不必更新密码,我不想要它.使用Flask-WTForms进行此操作的正确方法是什么?

我已经进入UserFormforms.py,我正在考虑制作一个自定义验证器,并且有一个文件级require_password选项可以覆盖默认检查.我是WTForms的新手,对Flask来说有点新鲜.

python flask wtforms flask-wtforms

5
推荐指数
1
解决办法
1837
查看次数

如何告诉子进程停止转义我的引号?

我试图使用子进程调用Vim,并传递一个参数.例如:

subprocess.call(['gvim.exe', ''' "+map <F5> :echo 'Hello!'<cr>" '''])
Run Code Online (Sandbox Code Playgroud)

此命令适用于命令行:

> gvim.exe "+map <F5> :echo 'Hello!'<cr>"
Run Code Online (Sandbox Code Playgroud)

然后我打了F5它,它告诉我你好.

子进程调用不起作用.当我在任务管理器中查看进程时,我看到我的字符串现在是:

"\" +map <F5> :echo 'Hello!'<cr>\""
Run Code Online (Sandbox Code Playgroud)

完全不是我的预期,我也不认为这是Vim所期望的.它看起来像子以某种方式逃避我的报价,但我不知道为什么.

有什么方法可以像我期望的那样让它发挥作用吗?

python vim subprocess

5
推荐指数
1
解决办法
4059
查看次数

如何增加熊猫数据框图的填充?

我正在尝试使用熊猫绘制一些直方图。这是一些示例代码,其执行的操作与我正在执行的操作类似:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('2018-10-14', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 6), index=ts.index, columns=['A', 'B', 'C', 'D', 'E', 'F'])
df = df.cumsum()
df.hist()
Run Code Online (Sandbox Code Playgroud)

数据以良好的直方图显示,但有一个小问题:

六个直方图,D重叠-20

我在顶部的直方图标签与下一行底部的X轴标签重叠。

我希望能够在这些之间添加一些间距,但是我还没有找到有关如何执行此操作的任何信息。

如何使用pandas和matplotlib增加地块之间的填充?

python matplotlib pandas

5
推荐指数
1
解决办法
237
查看次数

如何防止Mercurial补丁被拉?

到目前为止,我还没有找到一个明确的答案,尽管答案可能是"改变你的工作流程".

我刚刚开始玩Mercurial的补丁队列,我可以看到它的一些重要力量.这看起来非常棒.在我的测试中,我发现如果你有一个补丁队列repo1,并且你从中拉出来repo2,你可以做一些坏事.例如:

  1. 创建repos 1并克隆它.
  2. 启用队列 repo1
  3. 做一些提交和一些补丁 repo1
  4. 将更改拉到 repo2
  5. repo1取消应用(弹出?)所有补丁
  6. 将更改拉到 repo2

现在你会看到两个不同的分支 - 从某个角度看是有道理的.然而,由于我的补丁不是repo1历史的一部分(至少在它们被应用之前),似乎应该有办法告诉mercurial我的补丁是禁止的,并且只提供"官方历史".

有没有办法做到这一点?

version-control mercurial patch dvcs mercurial-queue

4
推荐指数
1
解决办法
201
查看次数

为什么C#.NET SortedList <T1,T2>实际上没有ElementAt?

3.5 Collections.Generic.SortedList的.NET文档

在文档中,它明确指出"ElementAt"是SortedList成员的扩展方法.嗯,我有一个,因此宣布:

private SortedList<int, ChainLink> linksByLevel = new SortedList<int, ChainLink>();
Run Code Online (Sandbox Code Playgroud)

我试着得到最后一个元素:

ChainLink lastLink = linksByLevel.ElementAt(linksByLevel.Count - 1);
Run Code Online (Sandbox Code Playgroud)

编译器会抛出大量有用的消息:

错误1'System.Collections.Generic.SortedList'不包含'ElementAt'的定义,并且没有System.Collections.Generic.SortedList<int,ChainLink>'可以找到接受类型'的第一个参数的扩展方法'ElementAt' (您是否缺少using指令或程序集引用?)

我得到由微软的文档,我的编译器在缺乏连贯性非常沮丧,很想咆哮有关的API之间的矛盾SortedListSortedList<T1, T2>,但我怀疑这会增加多少价值,我的问题.只相信我,这很令人沮丧: -

.net c# sortedlist

4
推荐指数
1
解决办法
1550
查看次数