【问题标题】:Weird Delimiter奇怪的分隔符
【发布时间】:2015-05-07 14:20:22
【问题描述】:

在 Python 中,我试图解析一个文件并分隔值,但是,我正在使用一个奇怪的分隔符。有人可以帮忙吗?谢谢!

我正在解析的文件中的行类似于:

john-burk AL
john-smith    CA
john-joe    FL
john-john  TX

当前代码:

with open('info.txt', 'r') as f:
    for line in f:
        try:
            name, state = line.split(<do not know what to use>)
        except Exception as e:
            print "[-] Error parsing data " + str(e)

预期输出:

name = "john-burk"
state = "AL"

【问题讨论】:

  • 预期输出是什么?
  • 在我看来像 '\t'(制表符)字符。
  • 哦,对不起,应该澄清一点。预期应该是name="john-burk", state="AL"
  • @Gall 会使用制表符作为我的分隔符来覆盖单个空格吗?
  • @SakamakiIzayoi 不,但是您应该通过在文本编辑器中可视化所有字符(例如)来检查这是否实际上是一个空格,而不是由于选项卡而导致的“可变长度空格”。跨度>

标签: python python-2.7 parsing delimiter


【解决方案1】:

引用str.split 文档,

str.split([sep[, maxsplit]]) 如果 sep 未指定或为None,则应用不同的分割算法:连续的空白被视为单个分隔符,如果字符串有前导或尾随空格,则结果将在开头或结尾不包含空字符串。

所以,你可以简单地做

name, state = line.split()
print name, state

由于我们没有指定分隔符,Python 将根据任意数量的连续空白字符作为分隔符进行拆分。所以,你的数据可以分成namestate

注意:如果name 有任何空白字符,这将不起作用。

【讨论】:

  • 这是我正在寻找的答案。不敢相信我想多了。当它允许时,我会选择这个作为答案。谢谢!
猜你喜欢
  • 2014-04-30
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多