Python字符串分割行

Python字符串分割行,python,string,split,Python,String,Split,我想得到一个字典(上面的字符串是一个txt文件),如下所示: add_numbers( "A1", "Element 560234 65952 6598881 20203256 2165883 659562 654981 24120 261240 31648948 23900 5512400 5512900 5612400 5612900" ) add_numbers( "A2", "Element 261240 31659 5612400 76803256 3165883 659863 65

我想得到一个字典(上面的字符串是一个txt文件),如下所示:

add_numbers( "A1", "Element 560234 65952 6598881 20203256 2165883 659562 654981 24120 261240 31648948 23900 5512400 5512900 5612400 5612900" )

add_numbers( "A2", "Element 261240 31659 5612400 76803256 3165883 659863 654224 44120 261240 31648948 23900 3612200 9512900 5612400 5642924" )

add_numbers( "A3", "Element 841225 65952 2165883 63103256 2165883 644861 344966 84120 161540 31653948 23900 5513426 5518906 5682405 8682932" )
add_numbers( "A1", "Element 560234 65952 6598881 20203256 2165883 659562 654981 24120 261240 31648948 23900 5512400 5512900 5612400 5612900" )

add_numbers( "A2", "Element 261240 31659 5612400 76803256 3165883 659863 654224 44120 261240 31648948 23900 3612200 9512900 5612400 5642924" )

add_numbers( "A3", "Element 841225 65952 2165883 63103256 2165883 644861 344966 84120 161540 31653948 23900 5513426 5518906 5682405 8682932" )

你有什么想法吗?我怎样才能做到这一点?多谢各位

{A1: 560234, 65952,6598881, 20203256,2165883, 659562,....}

{A2: 261240 31659 5612400,....}

{A3: 841225 65952 2165883,....}
产生

import re,ast
def add_numbers(d,key,elements): #we pass in a reference to a dict, which we update
    d[key] = map(int,elements.split()[1:]) #Returns ["Element",...], so we select all but first [1:]
dic = {}
with open('file.txt') as f:
    for line in f:
        key,elems = ast.literal_eval(re.search(r'\((.+)\)',line).group(0))
        add_numbers(dic,key,elems)

现在了解您想要处理此问题

>>> 
{'A1': [560234, 65952, 6598881, 20203256, 2165883, 659562, 654981, 24120, 261240, 31648948, 23900, 5512400, 5512900, 5612400, 5612900], 'A3': [841225, 65952, 2165883, 63103256, 2165883, 644861, 344966, 84120, 161540, 31653948, 23900, 5513426, 5518906, 5682405, 8682932], 'A2': [261240, 31659, 5612400, 76803256, 3165883, 659863, 654224, 44120, 261240, 31648948, 23900, 3612200, 9512900, 5612400, 5642924]}
将文本文件的文字内容输入字典时,我会这样做:

add_numbers( "A1", "Element 560234 65952 6598881 20203256 2165883 659562 654981 24120 261240 31648948 23900 5512400 5512900 5612400 5612900" )

add_numbers( "A2", "Element 261240 31659 5612400 76803256 3165883 659863 654224 44120 261240 31648948 23900 3612200 9512900 5612400 5642924" )

add_numbers( "A3", "Element 841225 65952 2165883 63103256 2165883 644861 344966 84120 161540 31653948 23900 5513426 5518906 5682405 8682932" )
add_numbers( "A1", "Element 560234 65952 6598881 20203256 2165883 659562 654981 24120 261240 31648948 23900 5512400 5512900 5612400 5612900" )

add_numbers( "A2", "Element 261240 31659 5612400 76803256 3165883 659863 654224 44120 261240 31648948 23900 3612200 9512900 5612400 5642924" )

add_numbers( "A3", "Element 841225 65952 2165883 63103256 2165883 644861 344966 84120 161540 31653948 23900 5513426 5518906 5682405 8682932" )
正则表达式
“([^”]*)”
的说明:

  • “()”
    匹配引号中的内容
  • [^”]*
re.findall
将在列表中返回结果

编辑


我收到一个错误。ValueError:需要超过1个值才能解包


您的文件中必须有一行不包含两对双引号。我已更新了上面的代码,以忽略与您的规范不匹配的行。

请格式化您的代码好吗?什么是添加数字?基本上,这将是一个字符串问题。split()[1:::@tchike您的意思是
添加数字(“A1”元素56023…
实际上在一个文本文件中?@tchike啊,让我重写我的答案。@Joran很好,我将我的答案更新为
map(int,…)
结果。+1我得到一个错误。ValueError:需要大于1的值才能返回unpack@tchike添加了一个编辑以响应此操作我无法使用此操作,因为添加了数字(“A1”,“元素56023…在txt文件中,我必须先拆分。@t如果您发布此类文件内容的示例,我将更新我的解决方案。txt文件的内容是我的第一部分。”question@tchike查看我的最新答案