- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 hmtl 文件,如下所示:
...
<!-- Special_ID -->
<p> stuff1 </p>
<p> stuff2 </p>
<!-- /Special_ID -->
...
我有一个 INI 文件:
[general]
param=stuff1
stuff2
如果用户编辑文件并更改 param
值为 test
,我想将html文件更改为:
...
<!-- Special_ID -->
<p> test </p>
<!-- /Special_ID -->
...
目前,我正在做的是解析 INI 文件(Python 的 ConfigParser
),然后将部分(“general”)和选项(“param”)转换为启动和停止特殊 id,如上面的示例所示.
然后:
while we haven't found the start id:
just write a line to some temporary file
write our start id to the temp file
write out new value ("test") to the temp file # surround with <p>
loop through original file until we find the stop id
then write the stop id and the rest of the file to temp
replace original file with tmp file
有更聪明的方法吗?
也许 Python 模块已经做到了这一点。
我也不太喜欢要求 <!-- Special_ID -->
,但我没有使用网络框架(只是一个简单的应用程序),所以我不能只是做一个花哨的 <p py:for ...>...
就像 TurboGears 中一样。
最佳答案
总体上不确定您当前提出的方法,但以下是如何替换特定注释后的所有 p
元素并插入新的 p
元素相反(使用 BeautifulSoup
HTML 解析器)。这个想法是:
p
sibling elements .extract()
找到的每个 p
元素.insert_after()
在注释后插入新的 p
元素工作代码:
from bs4 import BeautifulSoup, Comment
data = """
<!-- Special_ID -->
<p> stuff1 </p>
<p> stuff2 </p>
<!-- /Special_ID -->
"""
soup = BeautifulSoup(data, "html.parser")
# find "Special_ID" comment
special_id = soup.find(text=lambda text: isinstance(text, Comment) and "Special_ID" in text)
# find all sibling "p" elements
for p in special_id.find_next_siblings("p"):
p.extract()
# create new "p" element
tag = soup.new_tag("p")
tag.string = "test"
# insert the new "p" element after the comment
special_id.insert_after(tag)
print(soup.prettify())
打印:
<!-- Special_ID -->
<p>
test
</p>
<!-- /Special_ID -->
关于使用用户提供的值替换 HTML 文件中的文本的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324135/
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!