小编drb*_*sen的帖子

正则表达帮助

我试图在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.如何让正则表达式在列表中包含这些字符?

python regex python-3.x

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

matplotlib基本问题

请原谅我的简单问题.我刚刚开始使用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 matplotlib

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

用大括号包裹数字的正则表达式?

我正在尝试使用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 regex backreference

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

如何批量执行一系列Python脚本?

我经常发现我需要按顺序运行一系列python脚本.这些脚本的顺序和数量可能会有所不同,但是不是单独和按顺序执行每个脚本,是否有一种批量自动化一系列Python脚本的首选方法?我的程序需要多个复杂的文件路径和其他参数组合.

python batch-file

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

使用MacVim解决vimrc文件问题

我有困难得到的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.有没有人对问题是什么有任何建议?

vim homebrew macvim

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

帮助用 Python 封装命令行工具

我真的遇到了一个问题,我希望有人可以帮助我。我正在尝试在 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运行这个程序?我非常感谢您能提供的任何帮助。提前致谢。

python subprocess wrapper

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

帮助理解列表功能

当我在解释器中键入以下内容时,我得到了所需的输出行为:

>>> 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

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

Python中的问题,只有一行写入文件

我试图在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)

python python-3.x

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

如何在Python中创建复杂的字典结构?

我正在尝试从中读取数据并创建嵌套的字典字典.还有一个类似的问题在这里,但我似乎无法弄清楚如何适应解决我的具体问题.如果有人能解释我的问题解决方案,我将非常感激.

基本上,我有一个看起来像这样的文件:

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)

有人可以解释如何创建外部字典吗?我唯一的想法是读取文件并创建内部字典,然后重新读取文件以创建外部字典.当然必须有一个更简单的方法吗?在此先感谢您的帮助!

python dictionary nested

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

如何在MySQL中执行复杂范围查询

我有一个表(表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因为它他们属于自己的范围内返回两次.如何构造一个查询,返回每行范围之间的每一行?在此先感谢您的帮助.

mysql sql range

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

Python类中除法计算的差异

我有一个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)

python python-2.7 python-3.x

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

如何使用ggplot生成带有一个变量的平铺图?

我试图用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个变量创建一维水平标题图?

r ggplot2

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

有没有办法在Python函数中使用多个可变长度参数(*args)?

我想创建一个使用两个可变长度参数的函数.例如:

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 args

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