文本文件中的Python选项卡不均匀



我在用Python编写制表符分隔的文本文件时遇到问题。我将其设置为写入项目ID、宽度、深度等,但当我查看最后的数据文件时,即使两个产品ID的长度相同,一个也会被正确标记,另一个则不会。这就是它在文本文件中的样子:

Product ID      Tariff Number   Net Depth   Net Height  Net Length  Net width   Net Weight
7TAD012610R0010 3917320010  .61 m       .203 m              .61 m               
7TAD012610R0012 3917320010  .66 m       .229 m              .66 m               
7TAD012610R0013 3917320010  .711 m      .178 m              .711 m              
7TAD012610R0014     3917320010  .711 m      .178 m              .711 m              
7TAD013190R0000     7307193060  .102 m      .152 m              .114 m              
7TAD013180R0000     7307193060  .102 m      .203 m              .127 m              
7TAD013180R0002     7307193060  .114 m      .076 m              .127 m              
7TAD013190R0002     7307193060  .102 m      .152 m              .114 m              
7TAD013190R0004     7307193060  .102 m      .152 m              .127 m              
7TAD013180R0005     7307193060  .262 m      .188 m              .107 m              

正如你所看到的,前3个没有其他3个那么突出,尽管它们看起来长度相同,字符数量相同。。。以下是我为此编写的部分代码:

for URL in URLList:
    try:
        dataSoup = BeautifulSoup(urllib.request.urlopen(URL).read())
        print("Page", pageNo, "retrieved")

        #Try to find data of that type
        try:
            proID = columnLookup(URL, "Product ID:")
            fh.write(str(proID))
            fh.write("t")
            if len(PID[pageNo - 1]) < 8:
                fh.write("t")
        except:
            fh.write("tt")
        try:
            fh.write(dataSoup.find(id="CustomsTariffNumber").next_sibling.next_sibling.div.text)
            fh.write("t")
        except:
            fh.write("tt")
        try:
            fh.write(dataSoup.find(id="ProductNetDepth").next_sibling.next_sibling.div.text)
            fh.write("t")
            if len(dataSoup.find(id="ProductNetDepth").next_sibling.next_sibling.div.text) < 8:
                fh.write("t")
            print("Net Depth:", dataSoup.find(id="ProductNetDepth").next_sibling.next_sibling.div.text)
        #If none is found, skip over that column: Leave it blank
        except:
            fh.write("tt")

如果有人能让我知道它为什么这么做以及如何修复它,那就太好了。我认为这与它包含的字符有关,但我不知道该怎么解决,我试着添加和删除标签,试图找到两者的长度,但似乎什么都不管用。

如果这是正确的问题,这是去除它的正确方法吗?:

        try:
            proID = columnLookup(URL, "Product ID:")
            fh.write(str(proID).strip())
            fh.write("t")
            if len(PID[pageNo - 1]) < 8:
                fh.write("t")
        except:
            fh.write("tt")

我找到了更好的方法。。。我决定只使用内置的csv文件读取器/写入器,正如主人公hiro所建议的那样。如果有人想知道的话,我就是这样做的:

        with open('data.csv', 'a') as dataFile:
            csvWriter = csv.writer(dataFile, delimiter=',')
            csvWriter.writerow(productData)

然后我将数据值存储在productData中!

谢谢大家的帮助!

最新更新