我有这样的代码:
#opened file f
goto_line = num_lines #Total number of lines
while not found:
line_str = next(itertools.islice(f, goto_line - 1, goto_line))
goto_line = goto_line/2
#checks for data, sets found to True if needed
Run Code Online (Sandbox Code Playgroud)
line_str在第一次传递时是正确的,但是之后的每次传递都是读取不同的线然后它应该.
因此,例如,goto_line从1000开始.它读取1000行就好了.然后是下一个循环,goto_line是500,但它不读取第500行.它读取的某条线接近1000.
我正在尝试读取大文件中的特定行,而不必阅读超过必要的内容.有时它会向后跳到一条线,有时会向前跳.
我确实尝试过linecache,但我通常不会在同一个文件上多次运行此代码.
[更新]欣赏答案并输入所有内容,但最受欢迎的是工作代码.如果您可以提供可以读取示例文件的代码,那么您就是王(或女王).
[更新2]感谢您的出色答案和讨论.我需要做的就是读取它们,解析它们,并将它们的一部分保存在Django模型实例中.我相信这意味着将它们从原生编码转换为unicode,因此Django可以处理它们,对吧?
关于非ascii python CSV读取的主题,Stackoverflow上有几个 问题,但是那里和python文档中显示的解决方案不适用于我正在尝试的输入文件.
解决方案的要点似乎是编码('utf-8')CSV读取器的输入和unicode(item,'utf-8')读取器的输出.但是,这会遇到UnicodeDecodeError问题(参见上面的问题):
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 8: unexpected
Run Code Online (Sandbox Code Playgroud)
输入文件不一定是utf8; 它可以是ISO-8859-1,cp1251,或其他任何东西.
那么,问题是:在Python中读取CSV文件的弹性,交叉编码能力是什么?
问题的根源似乎是CSV模块是C扩展; 有一个纯python CSV阅读模块?
如果没有,有没有办法可靠地检测输入文件的编码,以便可以处理它?
基本上我正在寻找一种防弹方式来读取(并希望写入)任何编码的CSV文件.
这是推荐的解决方案失败:
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
... # csv.py doesn't do Unicode; encode temporarily as UTF-8:
... csv_reader …Run Code Online (Sandbox Code Playgroud) 我有一个程序使用QtScript进行一些自动化.我已经在脚本引擎的全局范围中添加了一堆C++函数和类,以便脚本可以访问它们,如下所示:
QScriptValue fun = engine->newFunction( systemFunc );
engine->globalObject().setProperty( "system", fun );
Run Code Online (Sandbox Code Playgroud)
我希望能够连续运行多个脚本,每个脚本都有一个全新的状态.因此,如果一个脚本设置了一个全局变量,比如
myGlobalVar = "stuff";
Run Code Online (Sandbox Code Playgroud)
我希望在下一个脚本运行之前擦除该变量.我这样做的方法是制作脚本引擎的全局对象的深层副本,然后在脚本完成运行时恢复它.但深拷贝不起作用,因为我的system功能突然出现错误:
TypeError: Result of expression 'system' [[object Object]] is not a function.
Run Code Online (Sandbox Code Playgroud)
这是我的深层复制功能,改编自:http:
//qt.gitorious.org/qt-labs/scxml/blobs/master/src/qscxml.cpp
QScriptValue copyObject( const QScriptValue& obj, QString level = "" )
{
if( obj.isObject() || obj.isArray() ) {
QScriptValue copy = obj.isArray() ? obj.engine()->newArray() : obj.engine()->newObject();
copy.setData( obj.data() );
QScriptValueIterator it(obj);
while(it.hasNext()) {
it.next();
qDebug() << "copying" + level + "." + it.name();
if( it.flags() & QScriptValue::SkipInEnumeration ) …Run Code Online (Sandbox Code Playgroud) 我有以下HTML代码,我需要解析它以检索玩家名称和他已经得分的运行.在这种情况下,它是'Ross Taylor'和9.什么是解析此信息的最佳方法?不想使用HTML解析器.REGEX是最好的方式(我知道人们对此已经死了!但我只想要这些2位信息,因此不想使用解析器)?我一直绞尽脑汁想知道如何弄清楚html文件中玩家名称的位置以及随后得分的行.下面的HTML注释部分是硬编码部分.我可以到达这个地方.然后检索标签之间的名称.这是一个很好的方法吗?另外如何在下一行中检索运行部分?
<!-- <a href="javascript:void(0);" onClick="return showHwkTooltip(this, 'lvpyrbat1');" class="livePlayerCurrent">*Luke Woodcock</a>-->
<a href="/icc_cricket_worldcup2011/content/current/player/38920.html" target="_blank" class="livePlayerCurrent" title="view the player profile for Ross Taylor">
*Ross Taylor
</a> <span style="margin-left:5px;" title="left-hand bat">(lhb)</span >
</td >
<td><b>9</b></td>
<td>9</td>
<td>1</td>
<td>0</td>
<td>100.00</td>
<td></td>
<td colspan="3" align="left"><span class="batStyl">striker</style></td>
<td></td>
<td colspan="8"></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息,请告诉我.
问候,山姆
我希望使用自定义XML进行状态栏通知.
要用作起点,有什么地方可以找到默认通知的xml代码吗?
谢谢.
如果创建body属性为
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.Body ="First Line \n second line";
Run Code Online (Sandbox Code Playgroud)
我也试过了
message.Body ="First Line" + system.environment + "second line";
Run Code Online (Sandbox Code Playgroud)
当我收到消息时(使用outlook),这两个都被忽略了.
关于如何获得多条线的任何想法?我正在努力避免使用html编码,以便电子邮件能够更好地使用垃圾邮件过滤器.
谢谢
这只是一个普遍的问题.目前我正在使用正则表达式进行网页抓取.但我认为有时候很难弄清楚正则表达式,所以我认为XSL/XPath是C#中正则表达式的替代品吗?
另外,我想知道除了上面列出的两个之外是否还有更先进的网页抓取技术.谢谢.
我想使用这种模式是新的热点,但我不明白它的优点是什么,我不理解范围的含义.
模式:
(function(window, document, undefined){
window.MyObject = {
methodA: function() { ... },
methodB: function() { ... }
};
})(window, document)
Run Code Online (Sandbox Code Playgroud)
所以我对此有几个问题.
封装像这样的对象有什么特别的优势吗?
为什么窗口和文档被输入而不是正常访问?
为什么undefined要传递这个?
将我们正在创建的对象直接附加到窗口是一个特别好的主意吗?
我已经习惯了我称之为Crockford风格的Javascript封装(因为我把它从Douglas Crockford Javascript视频中删除了).
NameSpace.MyObject = function() {
// Private methods
// These methods are available in the closure
// but are not exposed outside the object we'll be returning.
var methodA = function() { ... };
// Public methods
// We return an object that uses our private …Run Code Online (Sandbox Code Playgroud) 我使用以下代码
var processed = new List<Guid>();
Parallel.ForEach(items, item =>
{
processed.Add(SomeProcessingFunc(item));
});
Run Code Online (Sandbox Code Playgroud)
上面的代码线程是否安全?处理后的列表是否有可能被破坏?或者我应该在添加之前使用锁?
var processed = new List<Guid>();
Parallel.ForEach(items, item =>
{
lock(items.SyncRoot)
processed.Add(SomeProcessingFunc(item));
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
有没有办法从JSF中的不同支持bean调用多个方法?
我有一个存储用户信息的应用程序.我有多个支持bean,分为计划,地址,电话等.
当应用程序最初加载时,所有工作都会找到,但由于我的所有视图都是类型@ViewScope,因此即使显示新用户,也会保留计划,地址,电话列表.
当用户离开他们正在查看的当前人时,我需要手动将日程表,地址和电话列表设置为null我需要在一个时间点调用每个托管bean中的方法(当用户点击时commandLink).
是否可以在一个commandLink上调用多个bean方法?