- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题,我有一个大文件,我想用 Python 读取它,它看起来像:
"2019-10-09 10:11:09","NICK","Hello, how are you
today? I'm like ""weather"", often changing."
我想将此文件读入数据帧,如下所示:
col1 col2 col3
2019-10-09 09:32:09 NICK Hello, how are you today? I'm like ""weather"", often changing.
我遇到了一些问题。首先,有一个问题,我的分隔符是“,”,它也在来自 col3 的一些消息中。第二个问题是,在来自 col3 的一些消息中存在换行符,我不知道如何处理(如“you”之后的示例)。最后一个问题是,来自 col3 的消息中还有两个双引号 '""""',它们代表消息中的引号。
我尝试使用以下方式读取此文件:
with open('/data/myfile.csv', 'r', encoding='utf-8') as csvfile:
df = pd.read_csv(csvfile, sep=",", quotechar='"', escapechar='\\')
不幸的是,这个方法不起作用。我不知道我解释的这三件事中哪一件导致了问题。它向我显示错误,它期望三列,但实际上几乎没有。
编辑:还有一些其他问题,因为它仍然显示此错误:
标记数据时出错。 C 错误:第 60 行应有 3 个字段,但看到了 5
当我查看该文件时,我不知道它是如何解释行的,因为我在来自 col3 的消息中收到了一些断行。我如何打印导致问题的确切行?
编辑2:我在终端中使用了这段代码:
sed -n 60p myfile.csv
它打印了空行。所以我也用前后几行来做到这一点。它看起来像:
"2019-10-09 10:11:09","som1","This isn't this.
It's like this, and this.
And as my opinions is this.
Finally, it's the end."
编辑3:@Boendal 是对的。我包含的这一行不会引起问题。现在我已将代码编辑为:
with open('opinions-ml.csv', 'r', encoding='utf-8') as csvfile:
df = pd.read_csv(csvfile, names=['col1', 'col2', 'col3'], sep=",", quotechar='"', escapechar='\\')
我发现问题是由这样的行引起的:
"2019-10-09 10:11:09","NICK","This is some text "and this, is quote" and it is also text
Awww. and, there was, line break"
Python 将此作为数据帧读取,如下所示:
col1 col2 col3
2019-10-09 09:32:09 NICK This is some text and this
Awww. and there was line break
您认为有机会解决这个问题吗?也许使用正则表达式?或者我应该返回文件提供商来解决这个问题吗?
编辑4:另一行:
"2019-10-09 10:11:09","NICK","This is some text "and this is quote" and it is also text
Awww. and there, was line break"
Python 将此作为数据帧读取,如下所示:
col1 col2 col3
2019-10-09 09:32:09 NICK This is some text and this is quote" and it is also text
Awww. and there was line break NaN
最佳答案
据我所知,csv 方言可能会有所帮助。以下代码产生正确的输出。
import pandas as pd
import csv
csv.register_dialect('mydialect', delimiter=',', quoting=csv.QUOTE_ALL, doublequote=True)
df = pd.read_csv('test.csv', dialect='mydialect')
df
解决方案 2:重新格式化数据
用 ,(逗号)和第三个索引中的转义值分割该行。
import csv
with open('test.csv') as infile, open('reformated_data.csv', 'w', newline='') as outfile:
outputWriter = csv.writer(outfile, delimiter=',',
escapechar='\\', quoting=csv.QUOTE_NONE)
for line in infile:
line = line.split(',')
col12 = line[0:2]
col3 = ''.join(line[2:]).encode("unicode_escape").decode("utf-8")
outputWriter.writerow(col12 + [col3])
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html https://docs.python.org/3/library/csv.html#dialects-and-formatting-parameters
关于python - 读取 csv 文件,其中引号内包含两个双引号和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765755/
我有一个带有 的表格我想在服务器端捕获该文本区域中的任何换行符,并将它们替换为 . 这可能吗? 我尝试设置 white-space:pre在 textarea 上的 CSS,但仍然不够。 最佳答案
我正在通过 FileStream 更改文件(这是一个非常大的文件,我只需要更改标题而不重写整个文件。 该文件可以有 Unix 或 Windows 换行符,知道哪一个对我来说很重要,这样我可以在更新文件
如何以编程方式(不使用 vi)将 DOS/Windows 换行符转换为 Unix 换行符? dos2unix 和 unix2dos 命令在某些系统上不可用。 如何使用 sed、awk 和 tr 等命令
我编辑了一个 BibteX 文件,到目前为止,它显示了我需要的所有信息。 FUNCTION {electronic} { output.bibitem format.btitle "title"
您的软件是否处理来自其他系统的换行符? Linux/BSD linefeed ^J 10 x0A Windows/IBM return linefeed ^M^
我发现 Windows 命令行重定向会自动将 '\n' 替换为 '\r\n'。有什么方法可以避免这种情况?因为在 stdout 或 stderr 重定向之后,如果您将 '\r\n' 写入控制台,您将得
来自 this question ,这个…… lines = foo.value.split(/\r\n|\r|\n/); 是拆分字符串的一种方法,但如何用换行符将其连接回去? 另外,我想知道如果我说
我正在尝试获取新行,但如果我使用 \n 它不起作用。 任何通过向字符串添加一些东西来换行的方法,例如 \r\n (这也不起作用) gfx.DrawString("Project No \n" + te
我有一串数据,中间有换行符。例如: "Product Name \n Product Color \n Product Quantity \n Product Location \n Product
我正在尝试让 scmCommentPrefix 按照 http://maven.apache.org/plugins/maven-release-plugin/faq.html#scmCommentP
如何检查正则表达式 /^\n/在字符串中 blahblahblah 我似乎无法从 php 的 preg_match 获得返回值 1 . 编辑: 由于某种原因,我的坏处是 CR 本身就是我的换行符。
我很难在与文本字符串相同的行上输出变量。当我使用Write-Host而不是Write-Output时,它可以工作。我想使用Write-Output,因为这似乎是最佳做法(将内容保留在管道中),但是Wr
我正在Powershell中工作,以为here字符串中的特定单词着色。除包含回车/换行符的单词外,其他功能均有效。没有这些字符,如何计算单词的长度? 以下是我正在使用的功能和测试数据。我希望第二行上的
我有一个在Powershell中运行的脚本,并且我希望能够在脚本名称和脚本内容本身之间的结果文本文件输出中添加一行。 当前,从下面开始,行$str_msg = $file,[System.IO.Fil
有人知道smalltalk中字符串的换行符是什么吗? 我试图将字符串拆分为单独的行,但我无法弄清楚smalltalk 中的换行符是什么。 即。 string := 'smalltalk is
我有以下 printf 语句: printf ("%s (%s)\n",$row["word"], $row["definition"]); 我正在尝试解决换行符而不是: word defin
这个问题已经有答案了: how to use dotall flag for regex.exec() (4 个回答) 已关闭 7 年前。 字符串内容
我想用 CSS 换行。我正在使用内容。 td:before { content: "Test\A Test2"; } 它不工作。如何正确
考虑一个具有 UNIX 行结尾的 C++ 文件(即 '\x0a' 而不是 "\x0d\x0a")并包含以下原始字符串文字: const char foo[] = R"(hello^M )"; (其中
我有以下 printf 语句: printf ("%s (%s)\n",$row["word"], $row["definition"]); 我正在尝试解决换行符而不是: word defin
我是一名优秀的程序员,十分优秀!