我是一个完全蟒蛇的菜鸟,所以请耐心等待.我想让python扫描一个html页面,并用UTF-8兼容的东西替换Microsoft Word实体的实例.
我的问题是,你是如何用Python做的(我用Google搜索了这个但到目前为止还没有找到明确的答案)?我想在Python水域中浸泡我的脚趾,所以我想到一些简单的东西,这是一个很好的起点.看来我需要:
在PHP中,我会这样做:
$test = $_POST['pasted_from_Word']; //for example “Going Mobile”
function defangWord($string)
{
$search = array(
(chr(0xe2) . chr(0x80) . chr(0x98)),
(chr(0xe2) . chr(0x80) . chr(0x99)),
(chr(0xe2) . chr(0x80) . chr(0x9c)),
(chr(0xe2) . chr(0x80) . chr(0x9d)),
(chr(0xe2) . chr(0x80) . chr(0x93)),
(chr(0xe2) . chr(0x80) . chr(0x94)),
(chr(0x2d))
);
$replace = array(
"‘",
"’",
"“",
"”",
"–",
"—",
"–"
);
return str_replace($search, $replace, $string);
}
echo defangWord($test);
Run Code Online (Sandbox Code Playgroud)
你会怎么用Python做的?
编辑:嗯,好吧,暂时忽略我对UTF-8和实体的困惑.输入包含从MS Word粘贴的文本.卷曲引号之类的东西显示为奇数符号.我以前尝试修复它的各种PHP函数都没有给我我想要的结果.通过在十六进制编辑器中查看这些奇数符号,我看到它们对应于我上面使用的符号(0xe2,0x80等).所以我只是用HTML实体换掉了古怪的角色.因此,如果我上面的位已经是UTF-8,那么从MS Word中粘贴的是什么导致奇数符号呢?
编辑2:所以我开始学习一些关于Python的知识,发现我并不真正理解编码.我试图解决的问题可以简单地通过从头到尾进行一致的编码来处理.如果输入表单是UTF-8,则存储输入的数据库是UTF-8,输出它的页面是UTF-8 ...从Word粘贴工作正常.无需特殊功能.现在,关于学习一点Python ...
登录到我正在处理本地计算机上预期功能的站点但在远程服务器上失败但仅在Internet Explorer中失败.踢球者是它在本地IE中工作,而不是在远程机器上.
世界上有什么可能导致这种情况?我已经逐步完成了远程计算机上的代码,可以看到在数据库中检查输入的登录值,找到它们然后调用登录函数.这将设置两个$ _SESSION变量并重定向到主管理页面.但是,仅在IE中(而不是在本地计算机上运行时...这是关键)当到达主管理页面时,$ _SESSION变量不存在.var_dump($_SESSION)当我在我的本地环境中以及除了IE 6,7和8之外的每个浏览器中运行时,在远程服务器上运行时,我得到了我对每个浏览器的期望(我得到一个空值,好像没有为$ _SESSION设置任何内容) ).
这真让我难过,所以任何建议都值得赞赏.
例如......在IE中,在本地运行,var_dump给了我:
array
'Username' => string 'theusername' length=11
'UserID' => string 'somevalue' length=9
Run Code Online (Sandbox Code Playgroud)
在远程服务器上运行(仅限IE ...在其他浏览器中正常工作)var_dump给了我:
array(0){}
Run Code Online (Sandbox Code Playgroud)
代码(一个最小的例子......虽然这个问题不需要代码示例):
$User = GetUser($Username, $Password);
if ($User->UserID <> "") { // this works so we call Login()...
Login($User); // this also works and gives expected results. on to redirect...
header("Location: index.php"); // a var_dump at index.php shows that there is no session data at all in IE, remotely.
} else {
header("Location: login.php");
} …Run Code Online (Sandbox Code Playgroud) 这种情况源于想要在其网站中创建自己的"页面"而无需创建相应操作的人.
所以说他们有像mysite.com/index/books这样的网址...他们希望能够创建mysite.com/index/booksmore或mysite.com/index/pancakes但不必在索引控制器中创建任何操作.他们(可以做简单html的非技术人员)基本上想要创建一个简单的静态页面,而不必使用动作.
就像在索引控制器中会有一些通用操作来处理对不存在的操作的请求.你是怎么做到的,甚至是可能的?
编辑:使用__call的一个问题是缺少视图文件.缺少一个动作变得毫无意义,但现在你必须处理丢失的视图文件.如果它找不到一个框架将抛出一个异常(虽然如果有一种方法可以让它在缺少的视图文件上重定向到404 __call是可行的.)
place_id的custom_value设置为我先点击的任何一行.无论实际值如何,后续单击的行都将使用相同的值.为什么?
例:
place_id foo_name bar_value
10 blah abc
11 blah2 fgr
Run Code Online (Sandbox Code Playgroud)
单击place_id为10的行,然后单击"编辑",出现的表单将包含10place_id值.进行更改并保存,然后单击下一行.10虽然所有其他值都是正确的,但表单仍将具有place_id .
我的代码:
列place_id如下所示:
{name:'place_id', index:'place_id', editable: true, edittype:'custom',
editoptions: { custom_element:myelem,custom_value:myval }}
Run Code Online (Sandbox Code Playgroud)
该myval功能是:
function myval(elem){
return elem.val();
}
Run Code Online (Sandbox Code Playgroud)
我需要的是将myval设置为正在编辑的行的正确place_id.我看着elemFirebug 中的对象,我发现它总是具有第一次点击的行的值,但我不明白为什么我也不知道从哪里可以获取正确的值.任何建议都表示赞赏(我试过在jqgrid论坛上询问,但没有任何结果,所以我转向stackoverflow).
*编辑:如果我使用edittype:'text'而不是edittype:'custom'我得到显示和传递的正确值,但该列是可编辑的,它应该只是可见但不可编辑.
完整代码:
jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'/foo/bar/results',
datatype: 'json',
mtype: 'POST',
colNames:['Place ID', 'Site ID', 'Site Name', 'API ID', 'M Type'],
colModel :[
{name:'place_id', index:'place_id', key: true, sorttype:'integer',
width:70, editable: true, edittype:'custom',
editoptions: {custom_element:myelem,custom_value:myval }},
{name:'site_id', index:'site_id', sorttype:'integer', …Run Code Online (Sandbox Code Playgroud) 尝试访问 Flask 蓝图中定义的路由时出现 404,但我不明白为什么。有没有人看到我做错了什么(我是 Flask 和 Python 的新手,所以它可能是一些基本的东西)?
我的蓝图(test.py):
from flask import Blueprint, jsonify, request
from werkzeug.local import LocalProxy
test_blueprint = Blueprint(
'test_blueprint', __name__, url_prefix='/test')
@test_blueprint.route('/test', methods=['GET'])
def get_all_tests():
return jsonify([{
"id": "1",
"name": "Foo"
}, {
"id": "2",
"name": "Bar"
}, {
"id": "3",
"name": "Baz"
}]), 200
Run Code Online (Sandbox Code Playgroud)
我的app.py:
from test import test_blueprint
from flask import abort, Flask
from os import environ
def create_app():
app = Flask(__name__)
app.config.from_object('config.settings')
app.template_folder = app.config.get('TEMPLATE_FOLDER', 'templates')
app.url_map.strict_slashes = False …Run Code Online (Sandbox Code Playgroud) 这是我正在从标准ES2015转换为Typescript的React应用程序.在我的.tsx文件(从常规.js文件转换)我得到几个打字稿错误,我不知道如何解决.
首先是: error TS2339: Property 'propTypes' does not exist on type 'typeof App'.
这适用于:
App.propTypes = {
actions: PropTypes.object.isRequired,
fuelSavingsAppState: PropTypes.object.isRequired
};
Run Code Online (Sandbox Code Playgroud)
我尝试在定义App的代码上面创建一个接口,如:
interface App {
propTypes?: any;
}
Run Code Online (Sandbox Code Playgroud)
但这没有效果.很明显我是新手稿,所以我错过了什么?
另一个错误是:
error TS2605: JSX element type 'Element' is not a constructor function for JSX elements.
Property 'render' is missing in type 'Element'
Run Code Online (Sandbox Code Playgroud)
这适用于:
{settings.necessaryDataIsProvidedToCalculateSavings ? <FuelSavingsResults savings={settings.savings} /> : null}
Run Code Online (Sandbox Code Playgroud)
该错误特指有关的位 <FuelSavingsResults
完全失去了从哪里开始.任何建议都是最受欢迎的.
如果它有帮助,FuelSavingsResults的定义开始如下:
let FuelSavingsResults = (props) => {
let savingsExist = NumberFormatter.scrubFormatting(props.savings.monthly) > 0;
let savingsClass = savingsExist …Run Code Online (Sandbox Code Playgroud) 我有一个基于Typsecript的反应应用程序.它工作正常,但我想添加TypeDoc(想想JSDoc for Typescript)混合.安装后我从命令行运行它(在我测试时只处理一个文件):
typedoc --module commonjs --jsx react --out ../docs/ ./src/components/404/404.tsx
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error: /path/to/project/src/components/404/404.tsx(0)
Cannot find module 'react'.
Run Code Online (Sandbox Code Playgroud)
事实上,React已经安装好了.我已经尝试在全局和本地安装运行TypeDoc,它没有任何区别(想想可能全局安装无法找到正确的node_modules).该应用程序从Typescript编译并运行良好...没有关于丢失模块或类型defs的投诉......只是不能通过TypeDoc工作.
有什么建议?似乎为了在基于Typescript的React项目中生成文档,TypeDoc是城里唯一的游戏,所以我有点卡住了.
我有一个页面需要37秒加载.在加载时,它会通过屋顶固定MySQL的CPU使用率.我没有写这个页面的代码,而且相当复杂,所以瓶颈的原因对我来说并不是很明显.
我对它进行了分析(使用kcachegrind)并发现页面上的大部分时间用于执行MySQL查询(90%的时间用于25个不同的mysql_query调用).
查询采用以下形式,其中tag_id在25个不同的调用中都发生了变化:
SELECT * FROM tbl_news WHERE news_id IN (select news_id from tbl_tag_relations WHERE tag_id = 20)
每个查询大约需要0.8秒才能完成,并且会有一些较长的延迟时间进行测量...因此完全加载页面需要37秒.
我的问题是,是否使用导致问题的嵌套选择格式化查询的方式?或者它可能是其他一百万个中的任何一个?关于如何应对这种缓慢的任何建议都值得赞赏.
在查询上运行EXPLAIN给了我这个(但是我不清楚这些结果的影响......主键上的NULL看起来很糟糕,是吗?返回的结果数量对我来说似乎很高最后只返回少量结果):
1 PRIMARY tbl_news ALL NULL NULL NULL NULL 1318 Using where 2 DEPENDENT SUBQUERY tbl_tag_relations ref FK_tbl_tag_tags_1 FK_tbl_tag_tags_1 4 const 179 Using where
如何使用FirePHP输出数组?
我在Zend Framework项目中使用FirePHP.我可以输出单个变量的值:
$logger->log('foo = '.$foo, Zend_Log::INFO);
Run Code Online (Sandbox Code Playgroud)
并看到类似的东西:
foo = "Ponies!"
Run Code Online (Sandbox Code Playgroud)
但是如果$ foo是一个数组我只看到:
foo = Array
Run Code Online (Sandbox Code Playgroud)
这个词Array不是可点击的,也不是可以收集的.
我谷歌搜索谷歌和我的谷歌搜索没有返回任何有关如何使用FirePHP输出数组中的值的信息.有任何想法吗?
public void Add_text() {
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setId(i);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView product = new TextView(getActivity());
product.setText(" Product" + 5 + " ");
ll.addView(product);
EditText qty = new EditText(getActivity());
qty.setText(i + "");
qty.setId(i);
qty.setWidth(120);
ll.addView(qty);
Button btn = new Button(getActivity());
ll.addView(btn);
btn.setLayoutParams(params);
btn.setOnClickListener(o);
ly.addView(ll);
i++;
}
Run Code Online (Sandbox Code Playgroud)
我编写了上面的代码来动态创建文本字段和按钮;但是现在我需要在单击按钮时删除 2 个文本字段和一个按钮。我怎么做?