我在文件中有多个条目,如下所述。
"Item_1";"Item_1";"Products///Item///ABC///XYZ";"Item_1.jpg}";"";"Buy item
<br><strong>Items</strong>
<br><strong>Time</strong>";"";"";"";"";"";"Category: M[Item]";"";"";"Y";"N";"N";"None";""
"Item_2";....
在上面的文字中,&#34;购买项目&#34;之后有一个换行符。在第一行&amp;在&#39; / strong&gt;&#39;之后在第二行。
我想要做的改变是 -
1. Replace Products///Item///ABC///XYZ with Products///ABC///XYZ
2. Replace "Category: M[Item]" with "Category: M[ABC]"
3. In case if Entry 1 is Products///Item///ABC or Products///ABC, I dont want to change "Category: M[Item]" with "Category: M[ABC]", just change Products///Item///ABC to Products///ABC
我试图逐行读取整个文件。然后由&#39; ///&#39;分开存储条目数量和存储第三个条目。但是这会产生问题,因为我有多个换行符。
使用正则表达式还是其他方法有更简单的方法吗?
答案 0 :(得分:2)
像@Casimir建议的那样,您可以使用csv
模块来解析您的文件(因为它会处理换行符),就像这样
import csv
with open(your_filename) as f:
reader = csv.reader(f, delimeter=';', quotechar='"')
rows = list(reader)
然后对解析后的结果做你想做的事情(我不太确定你想要在这里实现什么,如果那不是你想要的那样评论)
for row in rows:
if 'Products///Item///ABC///XY' in row:
index = row.index('Products///Item///ABC///XY')
row[index] = 'Products///ABC///XYZ'
continue # If we replaced the first thing, skip to next row
elif 'Category: M[Item]' in row:
index = row.index('Category: M[Item]')
row[index] = 'Category: M[ABC]'