从文本中读取一行,并将其分成变量/结构
因此,由于数值分析的原因,我最近被迫从C转换为Python,并且是Python/Numpy的新手,我想知道是否有任何函数fscanf的fscanf for python.numpy.numpy。数据并将单个"字符串"存储到变量中。
我认为我最好的选择可能是使用split()将字符串分为x件,但是我不确定如何将字符串的每个单独片段分配给相应的变量。
还想知道是否有python中的C结构。
谢谢您的阅读。
# 回答1
在这里疯狂地猜测,但我认为您所追求的是最好的词典。
但是我不确定您在"将字符串的每个单个部分分配给相应的变量"。或确切的数据外观。或您以后要如何访问它。
但是,词典仍然是一个很好的工具。
在这里疯狂地猜测,但我认为您所追求的是最好的词典。
但是我不确定您在"将字符串的每个单个部分分配给相应的变量"。或确切的数据外观。或您以后要如何访问它。
但是,词典仍然是一个很好的工具。
选择 | 换行 | 行号
- >>> dd = {}
- >>> dd["add"] = lambda x, y: x+y
- >>> dd["hello"] = "Hello world"
- >>> dd
- {'add': <function <lambda> at 0x0000000002C2CF98>, 'hello': 'Hello world'}
- >>> dd["add"](2,7)
- 9
# 回答2
好的,所以我处理的数据看起来像以下数千个:
USB270.15385-29.63146 270.153847 -29.631455 2.966699E+03 -9.99 1.300391E+03 -9.99 -9.99 -1.99 A -A -A -A -A -A -A -A-- 6.787463E --------------------------- | 0.373 13.554 12.928 12.670 AAA | -------------------------------------------------------------------- ------------------------------------------------------------------------------------------------ ----------------------
我想获得该行的每个段,例如" USB 270.15385-29.63146 270.153847",并将其存储在名为star [i] [0]的二维数组中。
第二段-29.631455并将其存储在同一阵列星[i] [1] ...中的第一个14个段。
使用numpy i来累积函数genfromtext(),它允许我获得一串数据并根据定界数对其进行分解,但是我不确定如何将其放入我想要的二维数组中
好的,所以我处理的数据看起来像以下数千个:
USB270.15385-29.63146 270.153847 -29.631455 2.966699E+03 -9.99 1.300391E+03 -9.99 -9.99 -1.99 A -A -A -A -A -A -A -A-- 6.787463E --------------------------- | 0.373 13.554 12.928 12.670 AAA | -------------------------------------------------------------------- ------------------------------------------------------------------------------------------------ ----------------------
我想获得该行的每个段,例如" USB 270.15385-29.63146 270.153847",并将其存储在名为star [i] [0]的二维数组中。
第二段-29.631455并将其存储在同一阵列星[i] [1] ...中的第一个14个段。
使用numpy i来累积函数genfromtext(),它允许我获得一串数据并根据定界数对其进行分解,但是我不确定如何将其放入我想要的二维数组中
# 回答3
看来您显示的数据是在一行上,这很有意义。您可以通过在文件对象上迭代类似的内容来编译二维列表:
看来您显示的数据是在一行上,这很有意义。您可以通过在文件对象上迭代类似的内容来编译二维列表:
选择 | 换行 | 行号
- fileObj = open(file_name)
- data = []
- for line in fileObj:
- s = line.split()
- data.append((s[0:2], s[2:14]))
- fileObj.close()
# 回答4
我得到一个
类型错误:" int"对象不可订阅
让我看看我是否得到了for循环的工作方式...
它将逐行扫描文件,
对于每一行,它都会将其分为其中,但是它包含的元素。
据我了解,我并不真正了解程序的附加行部分,它将字符串的前两个部分插入数组的第一维中,而另一部分则插入最后13个元素。
我认为我想做的是在这里,但是我无法解决int对象错误:
我得到一个
类型错误:" int"对象不可订阅
让我看看我是否得到了for循环的工作方式...
它将逐行扫描文件,
对于每一行,它都会将其分为其中,但是它包含的元素。
据我了解,我并不真正了解程序的附加行部分,它将字符串的前两个部分插入数组的第一维中,而另一部分则插入最后13个元素。
我认为我想做的是在这里,但是我无法解决int对象错误:
选择 | 换行 | 行号
- fileObj = open(file_name)
- data = []
- i=0
- for line in fileObj:
- s = line.split()
- for j in range(13)
- data[i].append(s[j:j+1])
- i=i+1
- fileObj.close()
它将行的所有数据输入到由INT I确定的一个维
# 回答5
如果要插入整个行,则只会是数据。应用程序将为您提供列表= 2个维度的列表。替代方案是附加子集
data.Append([S [S [0],S [3],S [5]]) - >仅附加3个字段,第1,4和 第六 注意三个字段周围的[],该字段表示可以解释为第二维的子列表。 除非您在Gigabytes中有数据集,否则将整个列表附加在一起,然后使用任何相关的零件也很容易。 而且,您始终可以将类用作C结构的替代品,但是由于您知道每个位置是什么,那么说数据[x] [y]和某些变量名称一样容易。
如果要插入整个行,则只会是数据。应用程序将为您提供列表= 2个维度的列表。替代方案是附加子集
data.Append([S [S [0],S [3],S [5]]) - >仅附加3个字段,第1,4和 第六 注意三个字段周围的[],该字段表示可以解释为第二维的子列表。 除非您在Gigabytes中有数据集,否则将整个列表附加在一起,然后使用任何相关的零件也很容易。 而且,您始终可以将类用作C结构的替代品,但是由于您知道每个位置是什么,那么说数据[x] [y]和某些变量名称一样容易。
选择 | 换行 | 行号
- test_data="""USB270.15385-29.63146 270.153847 -29.631455 2.966699e+03 -9.99 1.300391e+03 -9.99 -9.99 A-A-- 6.787463e+01 -9.99 1.555773e+02 -9.99 -9.99 10100 | 0.373 13.554 12.928 12.670 AAA"""
- ##fileObj = open(file_name)
- bogus_file_obj=test_data.split("|")
- data = []
- for line in bogus_file_obj:
- s = line.split()
- data.append(s)
- for rec in data: ## print the results
- print "-"*30
- for sub_rec in rec:
- print sub_rec
- #
- # print using "array" indexing
- print "\n==================================\n"
- titles=["Name", "Variance", "Third"]
- for x in range(len(data)):
- print "-"*30
- for y in range(len(data[x])):
- ## associate a name with the field location
- if y < len(titles):
- print titles[y],
- print data[x][y]
# 回答6
非常感谢您的帮助!
标签: python