Python中文
首页
教程
问答
标签
搜索
登录
注册
有效地将不同的可能子串匹配到相同的值
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个CSV文件,其中一列称为操作系统,包含一个字符串,其值如下所示:</p> <pre><code>win-abc123 def456-windows 123123-WIN-ghi789 rhel-jkl012 45u8234dgf-redhat-mno345 pqr678-RHEL </code></pre> <p>换句话说,列值在表示操作系统的字符串(前面、中间或结尾)的某处包含一个子字符串。值可以是<code>win</code>、<code>windows</code>、<code>WIN</code>、<code>rhel</code>、<code>redhat</code>、<code>RHEL</code>之一。你知道吗</p> <p>我想检查列值,并用<code>WIN</code>或<code>RHEL</code>替换整个列来清理它。你知道吗</p> <p>我有一个笨拙的解决办法。迭代CSV中的每一行,并迭代操作系统映射中的每个<code>key, value</code>对。如果匹配,则替换CSV值。你知道吗</p> <pre><code>os_map = {'win':'WIN', 'windows': 'WIN', 'WIN':'WIN', 'rhel': 'RHEL', 'redhat': 'RHEL', 'RHEL': 'RHEL'} for row in rows: os = row[OPERATING_SYSTEM] for key, value in os_map.iteritems(): if key in os: row[OPERATING_SYSTEM] = value break </code></pre> <p>或者,在java中:</p> <pre><code>Map<String, String> osMap = new HashMap<String, String>(); osMap.put("win", "WIN"); osMap.put("windows", "WIN"); osMap.put("WIN", "WIN"); // Repeat for RHEL values String os; for (String[] row : rows) { os = row[OPERATING_SYSTEM]; for (Map.Entry<String, String> entry: osMap.entrySet()) { if (os.contains(entry.getKey())) { row[OPERATING_SYSTEM] = entry.getValue(); break; } } } </code></pre> <p>我不喜欢这样,因为在找到匹配项之前,我要遍历整个映射(在最坏的情况下)。有什么更有效的方法来解决这个问题?你知道吗</p> <p>如果CSV列只是<code>win</code>或<code>windows</code>,没有字母数字字符,我可以这样做:</p> <pre><code>os_map = {'win,windows,WIN': 'WIN', 'rhel,redhat,RHEL': 'RHEL'} for key, value in os_map: if key.contains(row[OPERATING_SYSTEM]): row[OPERATING_SYSTEM] = value break </code></pre> <p>但事实并非如此。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>最好使用状态机或正则表达式。查看java库中的正则表达式以查找和替换语义。如果你是硬核,你可以扮演自己的状态机,这可能是最有效的方式来处理搜索部分。更换零件可能有点棘手。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
7 回答
如何在乒乓球游戏中阻止球
9 回答
如何在乘法和模中不乘空间?
9 回答
如何在乘法和除以2个不同的数字之间进行交换?
6 回答
如何在也是数据一部分的单个字符上拆分大字符串
2 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
1 回答
如何在事件wxWidgets中传递自定义数据
10 回答
如何在事件中使用lambda i=i?
8 回答
如何在事件中心只接收最近的数据
3 回答
如何在事件发生之前保持云函数运行?
6 回答
如何在事件发生后使页面重定向到同一页面
8 回答
如何在事件回调之间保持python生成器的状态
9 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
7 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
7 回答
如何在事件处理程序中访问外部对象?
1 回答
如何在事件循环中将协程打包为正常函数?
3 回答
如何在事件循环之外运行协同程序?
1 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
9 回答
如何在事件文件中只保留一份摘要?
2 回答
如何在事件模板中添加事件
8 回答