当前位置: 首页 > 知识库问答 >
问题:

搜索文本文件并查找用值替换字典键

齐航
2023-03-14

我正试图把一个程序放在一起,将搜索整个文本文件的内容。该程序将根据字典搜索文本文件,并用字典值替换找到的任何键。我遇到了一个错误,我不知道如何继续。

示例:dictionary={key1:value1,key2:value2,key3:value3等...}

随机文本示例:在事实所有Key1之前,告诉这个任何他的。Key1坚持限制婚礼,Key2返回Key3辩论呈现。

以上事实所有的价值1告诉这个任何他的。值%1坚持限制婚礼值%2返回值%3正在辩论。

mappings = {
100: 1500, 101: 1501, 103: 1502, 106: 1503, 117: 1504, 120: 1505, 121: 1506, 122: 1507, 123: 1508, 124: 1509,
125: 1510, 126: 1511, 127: 1512, 128: 1513, 129: 1514, 130: 1515, 131: 1516, 132: 1517, 133: 1518, 134: 1519,
150: 1520, 152: 1521, 153: 1522, 154: 1523, 160: 1524, 161: 1525, 170: 1526, 171: 1527, 200: 1528, 209: 1529,
211: 1530, 223: 1531, 224: 1532, 231: 1533, 241: 1534, 242: 1535, 243: 1536, 244: 1537, 245: 1538, 246: 1539,
248: 1540, 249: 1541, 264: 1542, 284: 1543, 285: 1544, 290: 1545, 298: 1546, 299: 1547, 300: 1548, 301: 1549,
302: 1550, 303: 1551, 304: 1552, 305: 1553, 310: 1554, 320: 1555, 321: 1556, 322: 1557, 323: 1558, 324: 1559,
328: 1560, 340: 1561, 341: 1562, 342: 1563, 343: 1564, 344: 1565, 345: 1566, 346: 1567, 347: 1568, 360: 1569,
361: 1570, 362: 1571, 363: 1572, 364: 1573, 366: 1574, 367: 1575, 368: 1576, 369: 1577, 370: 1578, 371: 1579,
372: 1580, 376: 1581, 385: 1582, 386: 1583, 387: 1584, 388: 1585, 389: 1586, 395: 1587, 396: 1588, 397: 1589,
398: 1590, 399: 1591, 3000: 1325, 3001: 1326, 400: 1592, 401: 1593, 402: 1594, 403: 1595, 404: 1596, 405: 1597,
406: 1598, 407: 1599, 408: 1300, 450: 1301, 451: 1302, 452: 1303, 453: 1304, 454: 1305, 455: 1306, 500: 1307,
501: 1308, 502: 1309, 503: 1310, 504: 1311, 505: 1312, 506: 1313, 507: 1314, 508: 1315, 509: 1316, 600: 1317,
601: 1318, 602: 1319, 603: 1320, 604: 1321, 605: 1322, 606: 1323, 614: 1324, 700: 3728, 701: 3729, 702: 3730,
750: 3731, 751: 3732, 752: 3733, 800: 3734, 801: 3735, 802: 3736, 803: 3737, 805: 3738, 806: 3739, 807: 3740,
808: 3741, 809: 3742, 900: 3743, 902: 3744, 915: 3745, 920: 3746
}

# Open file for substitution
replaceFile = open('as03_int.txt', 'r+')

# read in all the lines
lines = replaceFile.readlines()

# seek to the start of the file and truncate
replaceFile.seek(0)
replaceFile.truncate()

# Loop through each line from file
for line in lines:
    # Loop through each Key in the mappings dict
    for i in mappings.keys():
        # if the key appears in the line
        if i in line:
            print(line)
            # do replacement
            line = line.replace(i, mappings[i])
    # Print the line and move to next line
    print(line)
    if i in line:
TypeError: 'in <string>' requires string as left operand, not int
Process finished with exit code 1

共有1个答案

微生信鸿
2023-03-14

您应该使用代码中更正的这一部分:

......
for i in mapping.keys():
    if str(i) in line:
        ......
 类似资料:
  • 我正在学习powershell,并尝试编写一个脚本,通过字符串查找目录中的文件,然后对找到的文件进行查找和替换。我想将文件列表存储为一个变量,然后循环遍历文件并替换特定的字符串。这是我的脚本和错误,如果你有任何想法,它将非常感谢。谢谢! 错误 Get-Content:无法将参数绑定到参数“path”,因为它为null。在C:\scripts\script.ps1:5 char:18+(Get-Co

  • 问题内容: 在表的一个特定字段中将进行文本搜索和替换的是哪种MySQL查询? 即搜索并替换为具有值的字段的记录变为。 问题答案: 更改并匹配您的表名和相关字段: 替换(字符串函数) INSTR(字符串函数)

  • 当我检查doc_text字符串时,我可以看到“{Today}”,但“{ConsultantName}”被拆分为多个运行。开始大括号和结束大括号不与单词放在一起--它们之间有XML标记: 代码

  • 我正在尝试使用OpenXML和埃里克·怀特的OpenXmlPowerTools(从NuGet安装)对. docx word文档进行基本的搜索和替换。我在这个网站和他的博客上遵循了一些例子,但是由于某种原因,当我运行代码后打开它时,我从来没有看到文档中出现的更改。这是我正在运行的简单函数: 消息框确实显示了它应该做的大量替换,但是当我打开文档时,我没有看到替换。此外,我认为我不需要那些文档。保存()

  • 问题内容: 如何使用Python 3搜索和替换文件中的文本? 这是我的代码: 输入文件: 当我在上面的输入文件中搜索并将“ ram”替换为“ abcd”时,它起了一种魅力。但是,反之亦然,即用“ ram”替换“ abcd”时,一些垃圾字符会保留在末尾。 用“ ram”代替“ abcd” 问题答案: fileinput已经支持就地编辑。stdout在这种情况下,它将重定向到文件:

  • 问题内容: 我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序仅接受以空格或制表符分隔的文本文件,但是此文本文件以分号分隔。我要从(Arcmap)导出文本文件的程序中没有选项来更改分隔,并且在文本文件本身中进行查找和替换实际上需要2天。 我已经搜索了一个脚本来执行此操作,但是它们似乎都用空格替换了单词文件的整个LINE,而不是单独替换了每个分号,而给我留了一个空的文本文件。 这