小编Sid*_*rma的帖子

如何使用过滤器来处理带有多个参数的lambda?

使用Python,我发现很难让filter()与lambda一起工作,因为需要传递多于1个参数的情况,如下面的代码片段所示:

max_validation = lambda x,y,z: x < y < z
sequence1 = [1,4,8]
filter(max_validation, sequence1)
Run Code Online (Sandbox Code Playgroud)

它引发了以下错误:

TypeError: <lambda>() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

请在这里建议我做错了什么.

python

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

在python提示加载的幕后活动

当我们调用python提示时,幕后会发生什么?

我更感兴趣的是了解如何在解释器中加载print,import等方法/函数?

编辑:我的问题的一些澄清:
当我们在我们的unix提示符/ Windows控制台上输入python并点击输入时,有什么是加载的库.我特别感兴趣的是如何为用户提供打印和导入等关键字.

python

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

Windows 上的 Python:作为子进程参数的路径被修改并生成错误

我在 Windows 和 Python 2.6 上使用子进程,如下所示。我正在尝试使用旧解析器应用程序(假设 parser.py)解析文本文件,如下所示:

import subprocess
k = subprocess.Popen(['python', 'parser.py', '-f C:\Report1\2011-03-14.txt'],
                     shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print k.communicate()
Run Code Online (Sandbox Code Playgroud)

这里的问题在于文件名传递到旧应用程序的方式,我无法更改代码,只能使用 Python 访问它。

它生成并出现以下错误:

IOError: [Errno 22] invalid mode (\'r\') or filename: C:\\Report1\\2011-03-14.txt
Run Code Online (Sandbox Code Playgroud)

当我从回溯中复制修改后的文件名(带有双正斜杠)来检查是否存在时,系统无法找到它。

问题:如何将路径作为参数传递,以便在不更改为双斜杠的情况下对其进行处理,以便系统可以读取文件?

注意:os.sep 也不能解决该问题。

编辑:使用 os.system 执行效果很好,但问题是获取输出以供以后使用。目前我在一个模块(run_parser.py)中使用 os.sytem,然后在另一个模块(get_parse_status.py)中使用子进程,该子进程打开 run_parser.py 来获取输出。会欣赏任何比这更好的东西。

谢谢你的时间。

python subprocess

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

基于数字部分的Python字符串处理:'5a + 6b'+'2a + 3b + 9c'='7a + 9b + 9c'

我需要添加两个简单的多项式(表示为字符串).以下示例将阐明我的要求.

input1 = '5a+6b'
input2 = '2a+3b+9c'
Run Code Online (Sandbox Code Playgroud)

所需金额应如下:

 '7a+9b+9c'
Run Code Online (Sandbox Code Playgroud)

目前我已经创建了一个函数(20行)来为我执行此任务,但我认为这可以改进.

编辑:添加我的代码

def add_domain_strings():
    input_list = ['5a+6b', '2a+3b+9c']
    vars_dict = {}
    for input in input_list:
        temp_list = input.split('+')
        for i in temp_list:
            split_index = None
            for j in i:
                if not j.isdigit():
                    split_index = i.index(j)
                    break
            if i[split_index:] in vars_dict:
                vars_dict[i[split_index:]] += int(i[:split_index])
            else:
                vars_dict[i[split_index:]] = int(i[:split_index])
    sum_string = ''
    for k,v in vars_dict.iteritems():
        if sum_string:
            sum_string += '+%s%s' % (v,k)
        else:
            sum_string += '%s%s' % (v,k)
    return sum_string
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

python ×4

subprocess ×1