小编Neo*_*Neo的帖子

Python 中非英语语言的正则表达式匹配

我正在尝试在 python 脚本中捕获并匹配俄语字符。由于俄语字符不属于 [aZ] 类型,我应该使用什么正则表达式来匹配它们。我不能使用 (.*) 因为它会匹配所有内容。

linkpat = re.compile('name=[a-Z]+;size=[0-9]+')
Run Code Online (Sandbox Code Playgroud)

python regex unicode python-2.x

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

在 __init__.py 中声明的导入对象

我无法理解在 '__init__.py' 中声明的对象是/应该如何导入到其他文件中。

我有一个像这样的目录结构

top/
 |
 |_lib/
    |_ __init__.py
    |_ one.py
Run Code Online (Sandbox Code Playgroud)

文件内容如下

库/__init__.py

a=object()
Run Code Online (Sandbox Code Playgroud)

库/一个.py

from lib import a
Run Code Online (Sandbox Code Playgroud)

这是问题所在。如果我从top目录中触发 python shell ,则以下命令运行良好

>>> from lib.one import a
Run Code Online (Sandbox Code Playgroud)

但是,如果我将目录更改为top/lib并在新的 python shell 中触发类似的命令,则会出现错误。

>>>  from one import a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "one.py", line 1, in <module>
  from lib import a
ImportError: No module named lib
Run Code Online (Sandbox Code Playgroud)

当然,我可以这样改变one.py,这将使一切正常。

from __init__ import a
Run Code Online (Sandbox Code Playgroud)

但我真的很想理解,为什么 import 命令是从top目录而不是从top/lib …

python python-module

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

在python中输入类型

我在SO上看了类似的问题,但没有一个回答我的问题.对于Ex.如何将实例强制转换为派生类?.但答案似乎并不是我想要的.

这是我的情况.我有类似Django的类结构

class Base:
     ...some stuff...

class Derived(Base):
     ...some more stuff...
Run Code Online (Sandbox Code Playgroud)

现在,当我在Django中进行一些查询时,我总是得到Base类的对象.

 baseobj = get_object_or_404(Base, id = sid)
Run Code Online (Sandbox Code Playgroud)

在运行时,我还可以遇到具有一些额外属性的"派生"对象.我能够弄清楚一个对象是Base还是派生的(Base类对象中有足够的信息).但是我应该如何访问仅在Derived类中出现的那些额外字段.我无法贬低"基地" - >"衍生".我应该怎么处理?

编辑:

我解决了这个问题.Django在另一个表中存储Derived类的"附加属性".因此,由于这行代码而出现了问题.

baseobj = get_object_or_404(Base, id = sid)
Run Code Online (Sandbox Code Playgroud)

baseobj将始终为Base类,并且不具有Derived类的任何属性.我必须进行额外的查询以获取Derived类对象.

baseobj = get_object_or_404(Base, id = sid)
if baseobj.isDerivedType:
      derivedobj = get_object_or_404(Derived, id = sid)
Run Code Online (Sandbox Code Playgroud)

python django inheritance

2
推荐指数
1
解决办法
2779
查看次数

建议:noob的非RDBMS数据库

对于基于Erlang,Python的新应用程序,我们正在考虑尝试非RDBMS数据库(仅仅是为了它).我研究过的一些数据库是Mongodb,CouchDB,Cassandra,Redis,Riak,Scalaris.这是一个简单要求的列表.

  1. 易于开发 - 我需要进行快速的概念验证演示.所以数据库需要有适合Eralang和Python的适配器.
  2. 我正在开发一个新的应用程序,我们有很多"连接"数据.有人推荐Neo4j用于图形数据.有什么想法吗?
  3. 可扩展 - 我们正在研究分布式架构,因此可扩展性非常重要.
  4. 目前,性能(以任何形式)并不完全在我的列表之上,我认为我们不会很快达到任何上述数据库的限制.

我只是在寻找非RDBMS数据库的起点.有什么建议?

database erlang non-relational-database

2
推荐指数
1
解决办法
571
查看次数

Python:try-except vs if-else来检查dict键

我遇到的代码我不知何故发现"奇怪".

var = None
try:
  var = mydict[a][b]
except:
  pass
Run Code Online (Sandbox Code Playgroud)

我不太习惯使用try-except检查dict键,显然有一个if-else序列来处理相同的情况.

var = None
if a in mydict:
    if b in mydict[a]:
        var = mydict[a][b]
Run Code Online (Sandbox Code Playgroud)

使用一种方法比另一种方法有任何"明显的"优势/劣势吗?

python if-statement try-catch

2
推荐指数
1
解决办法
1060
查看次数

Jquery:禁用"输入"字段在表单中不可用

我正在尝试根据用户输入动态设置表单内的输入值(在我的情况下为"choice").设置所需的值后,我想禁用该字段,以便用户无法更改它.这是我正在使用的代码.

// HTML
<select name="0-choices" id="id_0-choices">
<option value="Phone">Phone</option>
<option value="Fax">Fax</option>
<option value="Voicemail">Voicemail</option>
</select>

//Javascript
$(cfield).children().first().removeAttr('selected');
$(cfield).children('option[value="Voicemail"]').attr('selected','selected');
//$(cfield).val('Voicemail');
$(cfield).attr('disabled','disabled');
Run Code Online (Sandbox Code Playgroud)

问题是,如果我禁用该字段,则该字段在发布的数据中不可用.所以我的验证函数抱怨数据不可用.如何"冻结"输入字段并能够发布它.

javascript jquery

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

Android:相对布局内容低于屏幕

我是android的新手,我只是想创建一个聊天客户端.然而,底部的内容只是在屏幕外.

布局文件:

chat_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e1e1e1"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/form"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:background="#91f1f1f1"
    android:orientation="horizontal"
    android:paddingBottom="2dp" >

    <ImageButton
        android:id="@+id/sendMessageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:background="@drawable/send_button"
        android:text="d" />
</LinearLayout>


</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

activity_mail.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.marothiatechs.mchat.MainActivity">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/appbar_padding_top"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/AppTheme.PopupOverlay">

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />


</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

这在Android Studio的预览窗口中看起来不错. Android Studio预览版

但是,在我的设备上,图像按钮不可见. 实际设备

但是当我将linearlayout的"paddingBottom"增加到"200dp"时,按钮变得可见.实际设备 - 底部填充为200dp

我在SO上发现了类似的问题,其中大多数建议使用ScrollView.但我不认为ScrollView在我的情况下是必要的.有任何想法吗?

android android-layout android-fragments

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

将字符串与其中的换行符进行比较?

我正在尝试开发一个脚本,将运行时生成的字符串与用户输入的字符串进行比较.不幸的是,由于用户使用文本框输入他的代码,我在用户输入的字符串中得到^ M. 例如,如果我将这些字符串打印到文件我得到这个:

User Input:
1^M 
2^M
3

Output of script:
1
2
3
Run Code Online (Sandbox Code Playgroud)

显然,当我尝试比较这两个字符串时,我得到了一个错误.什么是最有效的方法来解决这个问题?如果您没有注意到,用户"donot"输入的所有行都以"^ M"结尾.此用户字符串中的最后一行没有^ M,而代码输出末尾有"\n".

python string

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