想分割线以下
*SECTION_TSHELL
$# secid elform shrf nip propt qr/irid icomp tshear
1 2 0.0 5 0 0.0
*MAT_ELASTIC
$# mid ro e pr da db not used
Steel 8000.0002.0000e+11 0.300000 0.0 0.0 0.0
文件的格式是这样的:每个 pid、secid 等一遍又一遍地占用 10 个空格。 上面的例子
第 1 步:选择时,粗体字母需要 10 个($# mid)个空格。想要使用特定数量的空格来分割一行。 步骤2:分裂后,需要识别相邻值。
import os
ModelPath = 'D:\pyLearning\Read_all_files'
k_files = os.listdir(ModelPath)
if k_files:
include_file = "_K3_Controls.k"
include_file_path = os.path.join(ModelPath, include_file)
with open(include_file_path, 'r') as include_kfile:
parts = include_kfile.read()
print("TestEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEnd")
for lines in parts:
if not lines.startswith('$#'):
# parts = lines.split()
length = 10
splits = [parts[i:i + length] for i in range(0, len(parts), length)]
# print("Worked", splits)
try:
i = splits.index("Steel")
next_word = splits[i + 1]
print(f"Steel = {next_word}")
except(ValueError, IndexError):
pass
print("finished")
期望输出有点像这样 工作过 ['钢铁', '8000.000', '2.0000e+11', '0.300000']
最后
钢铁 = 8000.000
提前致谢
您需要将文件分成几行。你可以只使用
for lines in include_kfile:
当你创建
splits
时,你应该切片lines
,而不是parts
:
splits = [lines[i:i + length] for i in range(0, len(lines), length)]
当您搜索
splits
时,您没有考虑到 Steel
中每个项目的前导空格。分手的时候可以把它们脱掉。
splits = [lines[i:i + length].strip() for i in range(0, len(lines), length)]
放在一起:
with open(include_file_path, 'r') as include_kfile:
for lines in include_kfile:
if not lines.startswith('$#'):
# parts = lines.split()
length = 10
splits = [lines[i:i + length].strip() for i in range(0, len(lines), length)]
#print("Worked", splits)
try:
i = splits.index("Steel")
next_word = splits[i + 1]
print(f"Steel = {next_word}")
except(ValueError, IndexError):
pass