我有一个包含
等行的文件12 45 some text
56 78 #another type of text
22 34 after column 2 are other data
我需要将存储两个第一个元素的每一行拆分为两个变量,将第二列之后的文本拆分为一个变量。在C中,使用sscanf()可以实现
sscanf(line,"%d %d %s",&a,&b,textArray);
我知道scanf python module,但显然它不是标准的,并且不包含在Debian中。
如何使用标准Python工具执行此操作?
答案 0 :(得分:0)
假设你的第一个字符串元素是数字我会建议像
def split(line):
list0= line.split()
list1 = [y for y in list0 if y.isdigit() ]
rest = ' '.join([c for c in list0 if c not in list1[:2]])
a = list1[0]
b = list1[2]
return a,b,rest
# ex:
print split('22 34 after column 2 are other data')
# output >> ('22', '2', 'after column 2 are other data')
答案 1 :(得分:0)
split就是你所需要的。
line.split(None, 2)
重点分歧的文档补充说:
string.split(s [,sep [,maxsplit]])
返回字符串s的单词列表。 如果可选的第二个参数sep不存在或者None,则单词由空格字符的任意字符串(空格,制表符,换行符,返回值,换页符)分隔。如果第二个参数sep存在而不是None ,它指定一个字符串用作单词分隔符。然后,返回的列表将比字符串中分隔符的非重叠出现次数多一个项目。如果给出maxsplit,则最多发生maxsplit分割数,并且字符串的其余部分作为列表的最后一个元素返回(因此,列表最多只有maxsplit + 1个元素)。如果未指定maxsplit或-1,则对分割数量没有限制(所有可能的分割都会生成)。
拆分空字符串的行为取决于sep的值。如果未指定sep或指定为None,则结果将为空列表。如果将sep指定为任何字符串,则结果将是包含一个空字符串元素的列表。