Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取具有多个数据类型的Stdin_Python_String_Int_Stdin - Fatal编程技术网

Python 读取具有多个数据类型的Stdin

Python 读取具有多个数据类型的Stdin,python,string,int,stdin,Python,String,Int,Stdin,假设您有由多个数据类型组成的输入(命令行参数,txt文件),如int和str。如何有效地将每个项目转换为int(如果是数字)和str(如果是str) 例如: input.txt A 1 B C 23 5 D 0 E 2 143 E 6 A 1 输出: ["A",1,"B","C",23] [5,"D",0,"E",2] [143,"E",6,"A",1] 使用open()和readlines(),可以将其存储在变量中并获取: ['A 1 B C 23 \n', '5 D 0 E 2\n',

假设您有由多个数据类型组成的输入(命令行参数,txt文件),如int和str。如何有效地将每个项目转换为int(如果是数字)和str(如果是str)

例如:

input.txt

A 1 B C 23 
5 D 0 E 2
143 E 6 A 1
输出:

["A",1,"B","C",23]
[5,"D",0,"E",2]
[143,"E",6,"A",1]
使用open()和readlines(),可以将其存储在变量中并获取:

['A 1 B C 23 \n', '5 D 0 E 2\n', '143 E 6 A 1']

但从这里开始,如果我想使用strip,我必须指定是将所有内容转换为str()还是int()-int()将导致错误,因为它不能接受字符串,str()将只将所有内容转换为字符串

一个选项是使用异常处理:

import sys

def strint (s):
    try:
        x = int(s)
    except:
        x = s
    return x

for line in sys.stdin:
    print([strint(x) for x in line.split()])
使用
strint.py
中的上述代码和文件
strint.txt
中的示例输入,我们可以运行它以获得以下输出:

$ python strint.py <strint.txt
['A', 1, 'B', 'C', 23]
[5, 'D', 0, 'E', 2]
[143, 'E', 6, 'A', 1]

$python strint.py您可以使用isdigit()检查这是最有效的方法吗?从字符串到整数的转换代价高吗?“从字符串到整数的转换代价高吗?”的答案取决于将此转换与什么操作进行比较。不过,简单地说,大多数转换相当于几个整数乘法和加法,这是任何典型计算机都能完成的最基本、最快的操作之一。