我正在尝试在 python 脚本中捕获并匹配俄语字符。由于俄语字符不属于 [aZ] 类型,我应该使用什么正则表达式来匹配它们。我不能使用 (.*) 因为它会匹配所有内容。
linkpat = re.compile('name=[a-Z]+;size=[0-9]+')
Run Code Online (Sandbox Code Playgroud) 我无法理解在 '__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 …
我在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) 对于基于Erlang,Python的新应用程序,我们正在考虑尝试非RDBMS数据库(仅仅是为了它).我研究过的一些数据库是Mongodb,CouchDB,Cassandra,Redis,Riak,Scalaris.这是一个简单要求的列表.
我只是在寻找非RDBMS数据库的起点.有什么建议?
我遇到的代码我不知何故发现"奇怪".
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)
使用一种方法比另一种方法有任何"明显的"优势/劣势吗?
我正在尝试根据用户输入动态设置表单内的输入值(在我的情况下为"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)
问题是,如果我禁用该字段,则该字段在发布的数据中不可用.所以我的验证函数抱怨数据不可用.如何"冻结"输入字段并能够发布它.
我是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)
但是当我将linearlayout的"paddingBottom"增加到"200dp"时,按钮变得可见.
我在SO上发现了类似的问题,其中大多数建议使用ScrollView.但我不认为ScrollView在我的情况下是必要的.有任何想法吗?
我正在尝试开发一个脚本,将运行时生成的字符串与用户输入的字符串进行比较.不幸的是,由于用户使用文本框输入他的代码,我在用户输入的字符串中得到^ 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 ×5
android ×1
database ×1
django ×1
erlang ×1
if-statement ×1
inheritance ×1
javascript ×1
jquery ×1
python-2.x ×1
regex ×1
string ×1
try-catch ×1
unicode ×1