用 ID 替换较大文件中的行
replace lines in a larger file with ID
大家好,我在用相同的 ID 替换相同的内容行时遇到了问题 e.x:
ONE -----------> 1
TWO -----------> 2
THREE-----------> 3
HELLO-----------> 4
SEVEN-----------> 5
ONE-----------> 1
ONE-----------> 1
ONE-----------> 1
TWO-----------> 2
我已经处理了下面这段代码,但没有结果:
注意:filein 和 file2 具有与定义示例相同的值。
# opening the file in read mode
file = open("filein.txt", "r")
# opening the file in read and write mod
file2 = open("filein2.txt", "r+")
replacement = ""
count=1
# using the for loop
for line in file:
for line2 in file2:
line = line.strip()
if line == line2 :
changes = line.replace(line, str(count))
replacement = replacement + changes + "\n"
file2.seek(0)
file2.write(replacement)
count=count+1
file.close()
filein 和 filein2 包含相同的值
ONE
TWO
THREE
HELLO
SEVEN
ONE
ONE
ONE
TWO
如果您想让每个唯一的单词都有一个唯一的 ID,您可以使用字典:
inputText = "ONE TWO THREE HELLO SEVEN ONE ONE ONE TWO"
indexDictionary = {}
count = 1
outList = []
for word in inputText.split(" "):
if word not in indexDictionary.keys():
indexDictionary[word] = count
count += 1
outList.append(indexDictionary[word])
print(outList)
print(indexDictionary)
据我了解,这就是您想要的;逐行比较两个文件,如果对应的行相等,则为它们分配一个 ID,如果这些行在文件中的其他地方重复,则分配与之前相同的 ID,如果这些行没有出现,则分配一个新的 ID。如果行不同,则获取它们的内容。最后将 ID 或行内容写入新文件:
index_dct = dict()
id_ = 1
with open('text.txt') as f1, open('text1.txt') as f2, open('result.txt', 'w') as result:
for line1, line2 in zip(f1, f2):
line1, line2 = line1.strip(), line2.strip()
if line1 == line2:
text = index_dct.get(line1)
if text is None:
text = index_dct[line1] = id_
id_ += 1
else:
text = f'{line1} {line2}'
result.write(f'{text}\n')
快速了解其工作原理:
首先你有一个字典来存储值及其对应的 ID,这样如果一个值重复你可以分配相同的 ID。
然后使用上下文管理器 (with
) 打开三个文件:
然后使用 zip
同时遍历前两个文件并比较行是否匹配,如果匹配则首先尝试根据它们的值获取相应的 ID,如果在dictionary 将当前行的值作为键值,并将其值作为 ID,然后将 ID 加一。
如果行不匹配,则将它们连接在一起[=13=]
最后将结果值写入第三个文件
大家好,我在用相同的 ID 替换相同的内容行时遇到了问题 e.x:
ONE -----------> 1
TWO -----------> 2
THREE-----------> 3
HELLO-----------> 4
SEVEN-----------> 5
ONE-----------> 1
ONE-----------> 1
ONE-----------> 1
TWO-----------> 2
我已经处理了下面这段代码,但没有结果: 注意:filein 和 file2 具有与定义示例相同的值。
# opening the file in read mode
file = open("filein.txt", "r")
# opening the file in read and write mod
file2 = open("filein2.txt", "r+")
replacement = ""
count=1
# using the for loop
for line in file:
for line2 in file2:
line = line.strip()
if line == line2 :
changes = line.replace(line, str(count))
replacement = replacement + changes + "\n"
file2.seek(0)
file2.write(replacement)
count=count+1
file.close()
filein 和 filein2 包含相同的值
ONE
TWO
THREE
HELLO
SEVEN
ONE
ONE
ONE
TWO
如果您想让每个唯一的单词都有一个唯一的 ID,您可以使用字典:
inputText = "ONE TWO THREE HELLO SEVEN ONE ONE ONE TWO"
indexDictionary = {}
count = 1
outList = []
for word in inputText.split(" "):
if word not in indexDictionary.keys():
indexDictionary[word] = count
count += 1
outList.append(indexDictionary[word])
print(outList)
print(indexDictionary)
据我了解,这就是您想要的;逐行比较两个文件,如果对应的行相等,则为它们分配一个 ID,如果这些行在文件中的其他地方重复,则分配与之前相同的 ID,如果这些行没有出现,则分配一个新的 ID。如果行不同,则获取它们的内容。最后将 ID 或行内容写入新文件:
index_dct = dict()
id_ = 1
with open('text.txt') as f1, open('text1.txt') as f2, open('result.txt', 'w') as result:
for line1, line2 in zip(f1, f2):
line1, line2 = line1.strip(), line2.strip()
if line1 == line2:
text = index_dct.get(line1)
if text is None:
text = index_dct[line1] = id_
id_ += 1
else:
text = f'{line1} {line2}'
result.write(f'{text}\n')
快速了解其工作原理:
首先你有一个字典来存储值及其对应的 ID,这样如果一个值重复你可以分配相同的 ID。
然后使用上下文管理器 (with
) 打开三个文件:
然后使用 zip
同时遍历前两个文件并比较行是否匹配,如果匹配则首先尝试根据它们的值获取相应的 ID,如果在dictionary 将当前行的值作为键值,并将其值作为 ID,然后将 ID 加一。
如果行不匹配,则将它们连接在一起[=13=]
最后将结果值写入第三个文件