小编Tim*_*ker的帖子

分隔换行符和逗号和分号

我想从用户输入一个textarea值的人名,并将它们分成数组中的项目.

从理论上可能的输入:

people = "Abby Andrews, Ben \r\nCharlie Connors    Daphne D., Ernie E. Engels; Faye\r\n\r\nGary Gomez"

array = people.split('??')
Run Code Online (Sandbox Code Playgroud)

如何构建正则表达式以成功分裂像上面这样的疯狂链?

应分开:

  • \r,\n,\r\n
  • 逗号(,)或分号(;)
  • 多个空间

不应拆分:

  • 期间(这可能是某人的初始)
  • 单个空格(可以分隔名字和姓氏)

我尝试过people.split(/\r\n,;/),people.split(/,;\r\n/)以及它们的组合,但没有产生结果.

regex ruby-on-rails ruby-on-rails-3

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

使用StringIO和csv模块的通用换行模式的意外行为

请考虑以下内容(Windows下的Python 3.2):

>>> import io
>>> import csv
>>> output = io.StringIO()         # default parameter newline=None
>>> csvdata = [1, 'a', 'Whoa!\nNewlines!']
>>> writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
>>> writer.writerow(csvdata)
25
>>> output.getvalue()
'1,"a","Whoa!\nNewlines!"\r\n'
Run Code Online (Sandbox Code Playgroud)

为什么有一个\n- 不应该已经转换为\r\n自启用通用换行模式?

启用此功能,在输入,线路的结局\n,\r\r\n 将被转换为\n被返回给调用者之前.相反,在输出时,\n转换为系统默认行分隔符,os.linesep.

python csv newline python-3.x

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

将多个掩码应用于数组

我正在解释我实际上希望做的事情,以防有更高级别的建议完全避免这个问题.

我有我保存在三个数组科学数据:wave,flux,error.它们代表波长,通量和误差值.阵列长约4000个元素(并且数组的索引号对应于检测器的像素数).

我做了各种各样的测试,但是对于这个例子,我们只是说我做了2次测试,我需要有效地屏蔽掉相关的数组.

masks = []
masks.append(wave > 5500.35)
masks.append(flux / wave > 8.5)
Run Code Online (Sandbox Code Playgroud)

Subquestion:我可以很容易地做2面罩案例,如:

fullmask = [x[0] and x[1] for x in zip(masks[0], masks[1])]
Run Code Online (Sandbox Code Playgroud)

但是对于任意数量的面具来说,这样做的方法是什么?

真正的问题:有没有对所有口罩适用于每一个阵列(的方式wave,flux,error),并保持原有的索引号?通过"保留原始索引号"我的意思是我原则上可以取掩蔽波阵列的平均像素数(原始索引号)?也就是说:如果wave[98:99]唯一没有掩盖的部分,平均像素将是98.5.

元问题:这是做这些事情的最好方法吗?


编辑

所以这里有一些样本数据可供使用.

wave = array([5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010,
   5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021,
   5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy filter

4
推荐指数
2
解决办法
5618
查看次数

列表在python中表现不佳?

我试图从一些巨大的文件中读取数据并将其写回来,但我意识到主要成本来自于将数据分配到列表而不是从文件中读取或写入数据....

    rows = [None] * 1446311
    begin = datetime.datetime.now()
    for i in range( 1446311 ):
       row = csvReader.next()
       rows[i] = row
    print datetime.datetime.now() - begin
Run Code Online (Sandbox Code Playgroud)

上面的代码需要18秒但是5秒,如果我注释掉第5行(rows[i] = row),我已经预先建立了列表(即保留了内存),但为什么它仍然如此慢?我能做什么让它更快?我尝试row for row in csvReader但是表现更差......

约翰

python

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

为什么Python的timeit()无休止地执行?

当尝试使用Python内置模块'timeit'时,如下所示:

timeit.Timer('print "hi"').timeit()
Run Code Online (Sandbox Code Playgroud)

它打印多行; 这是为什么?它不断印刷"喜":

hi
hi
hi
hi
...
Run Code Online (Sandbox Code Playgroud)

python cpython timeit

3
推荐指数
2
解决办法
679
查看次数

java替换'with \'

我正在使用mySQL.如果'在要添加到数据库的String中,则无法处理.

我试过了:

replaceAll("'","\\'") 
Run Code Online (Sandbox Code Playgroud)

replaceAll("'","\'")
Run Code Online (Sandbox Code Playgroud)

'\'什么想法我会如何替换?

java mysql replace

3
推荐指数
2
解决办法
1511
查看次数

将转义的转义序列替换为其未转义的值

作为输入我得到字符串"some text\\nsome text"- >如图所示"some text\nsome text".如何删除一个反斜杠并获取 "some text\nsome text"- >显示为

"some text
some text"
Run Code Online (Sandbox Code Playgroud)

这也适用于其他特殊角色,如"\t"?使用正则表达式,它可以只做 textLine.replace("\\n", "\n") and so on.

还有另外一种方法吗?

java regex

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

当我的代码正确缩进时,为什么会出现IndentationError?

以下是我的整个代码.在尝试执行它时,我不断收到错误消息

File "/Users/thomas/prac.py", line 15
  elif choice == "1":
IndentationError: expected an indented block 
Run Code Online (Sandbox Code Playgroud)

现在我确定我的缩进是正确的(我没有混合标签和空格!)但我不知道为什么这不起作用:

keepProgramRunning = True
while keepProgramRunning:
    print "Pleases choose an option: "
    print "0"
    print "1"

    choice = raw_input()

    if choice == "0":
        #do something
    elif choice == "1":
        print "Bye"
        keepProgramRunning = False
    else:
        print "try again"
Run Code Online (Sandbox Code Playgroud)

怎么了?

python

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

如何将格式错误的字符串转换为字典?

我有一个字符串s(注意,ab没有用引号括起来,所以它不能直接评估为a dict):

s = '{a:1,b:2}'
Run Code Online (Sandbox Code Playgroud)

我想将此变量转换为dict如下所示:

{'a':1,'b':2}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python string dictionary

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

python中的正则表达式跳过前两行的字符

我有一个看起来像这样的文本文件

Name     #Variants  #Cases  #Controls

CNGA3   5   5   0
GPR125  4   3   0
IGHMBP2 4   4   0
STK11IP 4   4   0
ACAD9   3   3   0
ANKRD17 3   3   0
Run Code Online (Sandbox Code Playgroud)

我想解析这个文件并将所有的基因名称(name列)返回到列表中list_of_genes,或类似的东西.

我有以下代码

gene_list = []
for i in range (6, 7):
    run_file = open('run_{}_results.txt'.format(i))
    gene = re.compile('[^\s]*', re.I)
    for line in run_file:
        match=gene.match(line, re.IGNORECASE)
        if match:
            matched_gene = match.group()
            gene_list.append(matched_gene)
Run Code Online (Sandbox Code Playgroud)

当我运行该代码时,我得到的结果是

['GA3', 'R125', 'HMBP2', 'K11IP', 'AD9', 'KRD17']
Run Code Online (Sandbox Code Playgroud)

正则表达式正在跳过每个基因的前两个字符,我无法弄清楚原因.

python regex expression

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