[英]Python - Take parts of a txt file and put them in another txt
我有一個使用以下語法的大文件:
Object 1:
[Useless Data]
com_pos = number number number
[Useless Data]
Object 2:
[Useless Data]
com_pos = number, number, number
[Useless Data]
...
and so on (there's a very large number of objects.).
我想做的是選擇數字,並將其放入具有特定格式的txt文件中(基本上每個對象一行,每個數字列)。
問題是我對每個對象都有相同的com_pos =
。 我應該怎么做? 我應該使用正則表達式嗎?
您必須為此編寫某種解析器。 如果您不理解正則表達式,則無需使用它們。 例如,給出您的兩個示例,這將同樣有效:
with open(path) as f:
for line in f:
columns = line.split()
if columns[0] == 'com_pos' and columns[1] == '=':
numbers = [float(column.rstrip(',')) for column in columns[2:]]
# do something with numbers
使用正則表達式可以使事情更緊湊,更有效或更健壯。 例如,考慮一下:
r = re.compile(r'com_pos\s*=\s*(\d+),?\s*(\d+),?\s*(\d+)')
with open(path) as f:
for line in f:
m = r.search(line)
if m:
numbers = [float(group) for group in m.groups]
# do something with numbers
這可能會運行得更快,並且在面對可變輸入(數據格式有時帶有逗號,有時看起來不太像人工編寫的文件……)時會更健壯,而且如果您了解正則表達式,它會更簡單。 但是,如果不這樣做,將很難維護。
com_pos\s*=\s*(\d+),?\s*(\d+),?\s*(\d+)
您可以使用以下內容:
with open ('first_file' ,'r') as f1 and open('second_file' ,'w') as f2 :
for line in f1.readlines() :
if 'com_pos' in line :
f2.write(line.split('=')[1])
首先,您需要找到com_pos
所在的行,然后可以使用=
分隔該行,並寫入第二個分隔的元素,即第二個文件中的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.