水果:来自德国、荷兰、法国
苹果:成熟的果实
橙子:维生素C
香蕉:维生素 D
水果:来自波兰、奥地利
橙子:维生素C
菠萝:维生素,帮助消化:使用了2天
葡萄:维生素B
水果:来自波兰、奥地利
梨:维生素C
苹果:成熟果实,维生素 a、b、c
- white apple: {This is used for immunity boost}
木瓜:一种维生素
水果:来自瑞典、挪威
橙子:维生素C
菠萝:一种维生素
葡萄:维生素B
要求:
这是一个超过 1000 行的大文件。我需要apple
在水果容器中添加元素仅当不存在时,而不会改变文件布局结构或现有元素的位置。
如果有什么不清楚的地方,请给我留言...提前感谢您的支持!
答案1
由于文件很大,我们将单独处理每个容器,而不是将整个文件加载到内存中。我们可以在 Python3 中轻松完成此操作。将其保存在,process.py
并将数据保存在fruits_file.txt
import sys
# This function checks if "apple" not in container then append it.
def add_apple_and_print(header, container):
if container is not None:
if not any(fruit.startswith("apple") for fruit in container):
container.append('apple: ripe fruit, vitamin a, b, c')
print("\n"+header+"\n")
print("\n\n".join(container))
# Open the file for reading
with open(sys.argv[1]) as f:
header = None # Initialize header with None
container = None # Initialize the container with None
for line in f: # Read line by line
line = line.strip() # Remove trailing spaces
if len(line) > 0:
if "fruits :" in line: # if line contains "fruits :"
add_apple_and_print(header, container) # Print privious container
header = line # Set header
container = [] # Create a new container for current fruit section
else:
container.append(line) # Add fruits to container
add_apple_and_print(header, container) # Print last container
然后
python3 process.py fruits_file.txt > fruits_file_with_apple.txt
编辑:在之前的脚本中,“apple”与“pineapple”匹配。因此无法添加到此类容器中。已修改脚本。
从 SvenMarnach 的回答中得到提示stackoverflow.com