我试图在Python 3中创建一个正则表达式,匹配7个字符(例如> AB0012),由未知数量的字符分隔,然后匹配另外6个字符(例如aaabbb或bbbaaa).我的输入字符串可能如下所示:
>AB0012xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>CD00192aaabbblllllllllllllllllllllyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyybbbaaayyyyyyyyyyyyyyyyyyyy>ZP0199000000000000000000012mmmm3m4mmmmmmmmxxxxxxxxxxxxxxxxxaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
这是我提出的正则表达式:
matches = re.findall(r'(>.{7})(aaabbb|bbbaaa)', mystring)
print(matches)
Run Code Online (Sandbox Code Playgroud)
我试图产生的输出看起来像这样:
[('>CD00192', 'aaabbb'), ('>CD00192', 'bbbaaa'), ('>ZP01990', 'aaabbb')]
Run Code Online (Sandbox Code Playgroud)
我阅读了Python文档,但是我找不到如何匹配正则表达式的两个部分之间的未知距离.是否有某种通配符可以让我完成我的正则表达式?在此先感谢您的帮助!
编辑:
如果我*?在我的代码中使用这样:
mystring = str(input("Paste promoters here: "))
matches = re.findall(r'(>.{7})*?(aaabbb|bbbaaa)', mystring)
print(matches)
Run Code Online (Sandbox Code Playgroud)
我的输出如下:
[('> CD00192','aaabbb'),('','bbbaaa'),('','aaabbb')]
*列表中的第二项和第三项分别缺少> CD00192和> ZP01990.如何让正则表达式在列表中包含这些字符?
请原谅我的简单问题.我刚刚开始使用Matplotlib,我遇到了一些困难.
我可以在没有问题的情况下运行以下解释器:
>>> from pylab import *
>>> plot([1,2,3])
>>> show()
Run Code Online (Sandbox Code Playgroud)
上面的代码生成了一个漂亮的图形.
但是,如果我将以下代码放在一个文件中并运行它,我会收到一个错误:
#!/usr/bin/env python
# encoding: utf-8
import sys
import os
from pylab import *
plot([1,2,3])
show()
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
Traceback (most recent call last):
File "/Users/sbrown/Desktop/new1.py", line 12, in <module>
from pylab import *
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pylab.py", line 1, in <module>
from matplotlib.pylab import *
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py", line 133, in <module>
from matplotlib.rcsetup import (defaultParams,
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/rcsetup.py", line 19, in <module>
from matplotlib.colors import is_color_like
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/colors.py", line 54, in <module> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python re.sub()将字符串与e字符匹配,并在e字符后面和lastdigit后立即插入花括号.例如:
12.34e56 to 12.34e{56}
1e10 to 1e{10}
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到正确的正则表达式插入所需的花括号.例如,我可以像这样正确插入左括号:
>>> import re
>>> x = '12.34e10'
>>> pattern = re.compile(r'(e)')
>>> sub = z = re.sub(pattern, "\1e{", x)
>>> print(sub)
12.34e{10 # this is the correct placement for the left brace
Run Code Online (Sandbox Code Playgroud)
使用两个反向引用时出现问题.
>>> import re
>>> x = '12.34e10'
>>> pattern = re.compile(r'(e).+($)')
>>> sub = z = re.sub(pattern, "\1e{\2}", x)
>>> print(sub)
12.34e{} # this is not what I want, digits 10 have been …Run Code Online (Sandbox Code Playgroud) 我经常发现我需要按顺序运行一系列python脚本.这些脚本的顺序和数量可能会有所不同,但是不是单独和按顺序执行每个脚本,是否有一种批量自动化一系列Python脚本的首选方法?我的程序需要多个复杂的文件路径和其他参数组合.
我有困难得到的MacVim(7.3-64)承认我.vimrc和.gvimrc因为升级到OS X 10.7.3的文件.以前,我只是通过符号链接我.vimrc并.gvimrc使用这些命令:
$ ln -s ~/.vim/vimrc /usr/local/Cellar/macvim/7.3-57/MacVim.app/Contents/Resources/vim/.vimrc
$ ln -s ~/.vim/gvimrc /usr/local/Cellar/macvim/7.3-57/MacVim.app/Contents/Resources/vim/.gvimrc
Run Code Online (Sandbox Code Playgroud)
但是,当我目前通过符号链接我的rc文件时,我无法让MacVim识别它们.我通过Homebrew安装了MacVim.有没有人对问题是什么有任何建议?
我真的遇到了一个问题,我希望有人可以帮助我。我正在尝试在 Python3.1 中为名为 的命令行程序创建一个包装器spooky。我可以在命令行上成功运行该程序,如下所示:
$ spooky -a 4 -b .97
Run Code Online (Sandbox Code Playgroud)
我对 spooky 的第一次 Python 包装尝试如下所示:
import subprocess
start = "4"
end = ".97"
spooky_path = '/Users/path/to/spooky'
cmd = [spooky_path, '-a', start, '-b', end]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
process.wait()
print('Done')
Run Code Online (Sandbox Code Playgroud)
上面的代码打印Done,但不执行程序spooky
接下来我尝试在命令行上执行该程序,如下所示:
$ /Users/path/to/spooky -a 4 -b .97
Run Code Online (Sandbox Code Playgroud)
上面的代码也失败了,并且没有提供任何有用的错误。
我的问题是:如何通过发送spooky -a 4 -b .97到命令行让Python运行这个程序?我非常感谢您能提供的任何帮助。提前致谢。
当我在解释器中键入以下内容时,我得到了所需的输出行为:
>>> x = (7, 2, 1, 1, 6, 2, 1, 2, 1, 2, 2, 6)
>>> y = list(x)
>>> y
[7, 2, 1, 1, 6, 2, 1, 2, 1, 2, 2, 6]
Run Code Online (Sandbox Code Playgroud)
上面,我只是将一个元组转换为一个列表.但是,当我运行以下代码时,我得到了一个我不理解的答案.
pwm = input("enter PWM: ")
npwm = pwm.replace('),(', ', ')
y = list(npwm)
print(y)
Run Code Online (Sandbox Code Playgroud)
输出:
['(', '7', ',', ' ', '2', ',', ' ', '1', ',', ' ', '1', ',', ' ', '6', ',', ' ', '2', ',', ' ', '1', ',', ' ', '2', …Run Code Online (Sandbox Code Playgroud) 我试图在Python 3中编写一个函数,将所有以字符串'halloween'结尾的行写入文件.当我调用这个函数时,我只能得到一行写入输出文件(file_2.txt).任何人都可以指出我的问题在哪里?提前致谢.
def parser(reader_o, infile_object, outfile_object):
for line in reader_o:
if line.endswith('halloween'):
return(line)
with open("file_1.txt", "r") as file_input:
reader = file_input.readlines()
with open("file_2.txt", "w") as file_output:
file_output.write(parser(reader))
Run Code Online (Sandbox Code Playgroud) 我正在尝试从中读取数据并创建嵌套的字典字典.还有一个类似的问题在这里,但我似乎无法弄清楚如何适应解决我的具体问题.如果有人能解释我的问题解决方案,我将非常感激.
基本上,我有一个看起来像这样的文件:
A 'abc' 12 0.001
B 'tex' 34 0.002
B 'tex' 78 0.005
E 'yet' 88 0.090
A 'abc' 22 0.120
Run Code Online (Sandbox Code Playgroud)
我需要创建一个如下所示的复杂字典:
complete_dict = {A:{'abc':[[12, 0.001], [22, 0.120]]},
B:{'tex':[[34, 0.002], [78, 0.005]]},
E:{'yet':[[88, 0.090]]}}
Run Code Online (Sandbox Code Playgroud)
我可以创建内部字典,但我无法弄清楚如何创建外部字典.这是我的内部字典的代码:
with open('data.txt', mode="r") as data_file:
fieldnames = ('character', 'string', 'value1', 'value2')
reader = csv.DictReader(data_file, fieldnames=fieldnames, delimiter="\t")
inner_dict = {}
for row in reader:
values = [int(row['value1']), float(row['value2'])]
string = row['string']
if string in inner_dict:
inner_dict[string].append(values)
else:
inner_dict[string] = values
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何创建外部字典吗?我唯一的想法是读取文件并创建内部字典,然后重新读取文件以创建外部字典.当然必须有一个更简单的方法吗?在此先感谢您的帮助!
我有一个表(表A),带有一个整数字段(字段B).对于表A的每一行,我想构建围绕字段B的整数值的+/- 100的范围,然后找到字段B中在这些范围内的所有值.需要对字段B中的所有值执行查询.查询需要返回每个行范围内的每一行.这是我想要做的一个例子:
Table A
_______
A 1000
B 3000
C 5000
D 1090
Run Code Online (Sandbox Code Playgroud)
使用上面的表A,查询将首先找到字段B中所有整数的范围(+/- 100).
900 - 1100
2900 - 3100
4900 - 5100
990 - 1190
Run Code Online (Sandbox Code Playgroud)
然后,查询将遍历这些范围并返回表A中属于生成范围的行.使用上面的示例,查询将返回:
A 1000
A 1000
B 3000
C 5000
D 1090
D 1090
Run Code Online (Sandbox Code Playgroud)
A而且D因为它他们属于自己的范围内返回两次.如何构造一个查询,返回每行范围之间的每一行?在此先感谢您的帮助.
我有一个Python 3类方法来重新调整值,如下所示:
class A(object):
"""docstring for A"""
def __init__(self):
super(A, self).__init__()
def rescale(self, old_min, old_max, new_min, new_max, value):
"""rescales a value given a current old_min and
old_max to the desired new_min and new_max"""
scale = (old_max - old_min) / (new_max - new_min)
rescaled_value = new_min + ((value - old_min) / (scale))
return rescaled_value
Run Code Online (Sandbox Code Playgroud)
使用Python 3,此方法的工作方式如下:
>>> import A
>>> x = A()
>>> x.rescale(1,10,1,100,5)
45.0
Run Code Online (Sandbox Code Playgroud)
在Python 2.7中,此代码不起作用:
>>> from __future__ import division
>>> x = A()
>>> x.rescale(1,10,1,100,5)
Traceback (most …Run Code Online (Sandbox Code Playgroud) 我试图用ggplot2和一个变量做一个平铺的图.数据如下所示:
fruit numbers
apples 6
peaches 2
grapes 10
cherries 2
... many more fruit
Run Code Online (Sandbox Code Playgroud)
我可以绘制与x和y变量相同的数据,我可以使用此代码:
p <- qplot(fruit,fruit) + geom_tile(aes(fill=numbers))
Run Code Online (Sandbox Code Playgroud)
输出如下所示:

上面的情节正是我想要的情节; 但是,我需要将数据排列在一个水平的一维图中.如何使用1个变量创建一维水平标题图?
我想创建一个使用两个可变长度参数的函数.例如:
def my_func(*args1, *args2):
for i in args1:
do stuff
for j in args2:
do stuff
Run Code Online (Sandbox Code Playgroud)
Python中有没有一种方法可以使用多个*args?在此先感谢您的帮助.
python ×10
python-3.x ×3
regex ×2
args ×1
batch-file ×1
dictionary ×1
ggplot2 ×1
homebrew ×1
macvim ×1
matplotlib ×1
mysql ×1
nested ×1
python-2.7 ×1
r ×1
range ×1
sql ×1
subprocess ×1
vim ×1
wrapper ×1