相关疑难解决方法(0)

使用fputcsv将BOM添加到CSV文件

我生成了一个包含外来字符的简单CSV文件.我已经注意到,如果我没有包含字节顺序标记,外国字符在Excel中没有正确显示(但是当存在BOM时它们看起来很好).

如何在首次创建文件时将BOM添加到文件的开头?我尝试了以下内容并且无法正常工作: - /

function processForm($competition, $competitionEntry) {
    $BOM = "\xEF\xBB\xBF"; // UTF-8 BOM

    $filename = $competition->ID.".csv";
    $file = "entries/".$filename;     

    $fields = array_keys($competitionEntry);
    $submittedForm = $competitionEntry;

    if(file_exists($file)) {
        $fp = fopen($file, 'a');
        if($fp && 
            fputcsv($fp, $submittedForm) && 
            fclose($fp)) {
            return true;
        } 
    } else { // CREATE NEW FILE
        $fp = fopen($file, 'w');
        if($fp && 
            fputcsv($fp, $BOM) && // WRITE BOM TO FILE   
            fputcsv($fp, $fields) &&
            fputcsv($fp, $submittedForm) &&
            fclose($fp)) {     
            return true;
        } 
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

php csv excel byte-order-mark fputcsv

5
推荐指数
1
解决办法
8681
查看次数

如何用Excel打开UTF-8编码的文本文件?

我有一个扩展名为“.tsv”的文本文件。它具有 UTF-8 编码并包含西里尔字符。当我尝试使用“打开方式”->“Excel”功能打开它时,Excel没有显示正确的字符,而如果我以同样的方式用Notepad++打开它,我可以正确地看到字符。我想避免使用向导将文件导入 Excel 中。

csv excel utf-8 character-encoding

5
推荐指数
1
解决办法
1万
查看次数

如何将非英文字符串存储到excel文件python3中?

我有一个简单的项目,从旅游网站抓取评论并将其存储在excel文件中.评论可以是西班牙语,日语或任何其他语言,评论有时也包含特殊符号,如"❤❤".

我需要存储所有数据(如果无法写入,可以排除特殊符号).

我能够抓取我想要的数据并将其打印在控制台中(如日文文本),但问题是将其存储在csv文件中,它显示错误消息,如下所示

我尝试使用utf-8编码打开文件(如下面的评论中所述),但随后它将数据保存在一些没有意义的奇怪符号中....并且无法找到问题的答案.有什么建议.

我使用的是python 3.5.3

我的python代码:

from selenium import webdriver
from bs4 import BeautifulSoup
import time
import re

file = "TajMahalSpanish.csv"
f = open(file, "w")
headers = "rating, title, review\n"
f.write(headers)

pages = 119
pageNumber = 2
option = webdriver.ChromeOptions()
option.add_argument("--incognito")

browser = webdriver.Chrome(executable_path='C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.5\chrome webdriver\chromedriver', chrome_options=option)

browser.get("https://www.tripadvisor.in/Attraction_Review-g297683-d317329-Reviews-Taj_Mahal-Agra_Agra_District_Uttar_Pradesh.html")
time.sleep(10)
browser.find_element_by_xpath('//*[@id="taplc_location_review_filter_controls_0_form"]/div[4]/ul/li[5]/a').click()
time.sleep(5)
browser.find_element_by_xpath('//*[@id="BODY_BLOCK_JQUERY_REFLOW"]/span/div[1]/div/form/ul/li[2]/label').click()
time.sleep(5)

while (pages):
    html = browser.page_source
    soup = BeautifulSoup(html, "html.parser")
    containers = soup.find_all("div",{"class":"innerBubble"})

    showMore = soup.find("span", {"onclick": "widgetEvCall('handlers.clickExpand',event,this);"})
    if showMore:
        browser.find_element_by_xpath("//span[@onclick=\"widgetEvCall('handlers.clickExpand',event,this);\"]").click()
        time.sleep(3)
        html = …
Run Code Online (Sandbox Code Playgroud)

python selenium beautifulsoup web-scraping python-3.x

5
推荐指数
1
解决办法
492
查看次数

使用 Export-CSV 将“SEP=,”添加到 CSV 的开头

有没有一种干净的方法可以附加SEP=,到由 创建的 CSV 文件的开头Export-CSV

\n\n

注意:这是一个 XY 问题;有关我的根本问题的信息,请参阅下面为什么需要这个。我要求提供 SEP 部分,因为这似乎是最好的解决方案,因为我需要继续使用 UTF8 CSV,并且不希望用户必须更改其工作方式以避免出现问题。

\n\n

创建后修改文件

\n\n

简单的选择是这样的;然而感觉很混乱(即我们释放文件上的锁然后必须返回并更新它)。

\n\n
function Repair-Csv {\n    [CmdletBinding()]\n    Param (\n        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]\n        [string]$Path\n    )\n    Begin {\n        $sep = "SEP=,`r`n" \n    }\n    Process {\n        $sep + (Get-Content -Path $Path -Raw) | Set-Content -Path $Path\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

代理功能解决方案尝试

\n\n

我尝试创建一个代理函数(下面的代码),但发现包装的Export-CSV命令不会将其输出附加到我的调整文件中,而是读取我已经编写的内容并尝试用作SEP=列标题;所以我最终没有数据(除非我导出的对象的属性之一恰好被称为SEP=.

\n\n
# $MetaData = New-Object System.Management.Automation.CommandMetaData (Get-Command \'Export-CSV\')\n# [System.Management.Automation.ProxyCommand]::Create($MetaData)\nfunction Export-CsvAdvanced {\n    [CmdletBinding(DefaultParameterSetName=\'Delimiter\', SupportsShouldProcess=$true, …
Run Code Online (Sandbox Code Playgroud)

csv powershell byte-order-mark utf-8 export-to-csv

5
推荐指数
0
解决办法
1479
查看次数

JavaScript:如何下载包含UTF-8编码的法语文本的CSV文件

我正在尝试使用JavaScript下载CVS文件.该CSV包含法语文本.我正在使用blob创建文件

    var blob = new Blob([ csv ], {
                type : 'text/csv;charset=utf-8'
            });
    var csvUrl = window.URL.createObjectURL(blob);
Run Code Online (Sandbox Code Playgroud)

但是当我打开csv文件时,它会以ANSII格式显示内容,因为法语字符转换为某些未知字符.

但是如果我打开与文本相同的文件,编码就可以了(UTF-8).

Example: Text I am trying to download "Opération"
Text Visible in Excel (.csv) ==> Opération   <== With unknown characters
Text if opened in Notpad++ ==> Opération   <== Correct UTF-8
Run Code Online (Sandbox Code Playgroud)

如何使用UTF-8编码直接打开下载CSV文件?我不希望用户在excel中更改任何内容.我想要一些javascript格式,以便excel可以识别我的所有字符而不管其编码.有可能做点什么吗?

javascript blob export-to-csv

3
推荐指数
1
解决办法
3011
查看次数

在 Excel 中正确呈现 Flask 生成的 CSV 文件

这是 Flask 视图的一个最小示例,它生成 CSV (python 2.7)。

\n\n
# -*- coding: utf-8 -*-\n\nimport csv\nimport StringIO\n\nfrom flask import Flask, Response\n\napp = Flask(__name__)\n\n\n@app.route('/example.csv')\ndef example_csv():\n    f = StringIO.StringIO()\n    writer = csv.writer(f)\n    writer.writerow(['Header 1', 'Header 2', 'Header 3'])\n    writer.writerows([unicode(_).encode('utf-8') for _ in row] for row in (['1', '2', '3'], \n                                                                           ['a', 'b', 'c'],\n                                                                           [u'\xc2\xa3', u'\xe2\x82\xac', u'\xc2\xa5']))\n    response = Response(f.getvalue(), mimetype='text/csv')\n    response.headers['Content-Disposition'] = u'attachment; filename=example.csv'\n    return response\n\n\nif __name__ == '__main__':\n     app.run(debug=True)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 Excel 中打开给出:

\n\n
Header 1    Header 2    Header 3\n1   2   3\na   b   c\n\xc3\x82\xc2\xa3 …
Run Code Online (Sandbox Code Playgroud)

python csv excel flask

2
推荐指数
1
解决办法
2350
查看次数

为什么使用 utf-16 时 df.to_csv() 的输出只有一列?

我现在尝试输出用塞尔维亚语编写的数据框。首先,我尝试使用 utf-8 或 utf-8-sig 编解码器。有多个列,这是正确的。但是输出的csv文件存在乱码问题。然后我尝试使用 utf-16 输出数据帧。这次编解码器是正确的。但输出的 csv 只有一列,例如:

我的代码是:

df1.to_csv('people.csv', encoding = "utf-16",index = False)
Run Code Online (Sandbox Code Playgroud)

原始数据帧的头部是:

在此输入图像描述

如果我使用 utf-8,输出为(列正确但编解码器不正确): 在此输入图像描述

如果我使用 utf-16,输出为(编解码器正确但列不正确):在此输入图像描述

我该如何解决这个问题。谢谢!

python

0
推荐指数
1
解决办法
1875
查看次数