- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个包含\n EOL 字符的制表符分隔文件,看起来像这样:
User Name\tCode\tTrack\tColor\tNote\n\nUser Name2\tCode2\tTrack2\tColor2\tNote2\n
我正在获取此输入文件并使用 split('\t')
将其重新格式化为嵌套列表。该列表应如下所示:
[['User Name','Code','Track','Color','Note'],
['User Name2','Code2','Track2','Color2','Note2']]
生成文件的软件允许用户在填写“备注”字段时按任意次数的“回车”键。它还允许用户按“输入”键创建任意数量的换行符,而无需在“注释”字段中输入任何可见文本。
最后,用户可以在“注释”中间按任意多次“输入”创建多个段落,但从操作的角度来看,这种情况很少见,所以我愿意不考虑这种可能性如果它使代码复杂化很多。这种可能性的优先级真的非常低。
如上面的示例所示,这些操作会导致在“注释”字段之前、尾随或替换任意长度的“\n\n...”代码序列。或者这样说,在我将文件对象放入列表之前需要进行以下替换:
\t\n\n... preceding "Note" must become \t
\n\n... trailing "note" must become \n
\n\n... in place of "note" must become \n
\n\n... in the middle of the text note must become a single whitespace, if easy to do
我试过使用 strip() 和 replace() 方法但没有成功。是否需要先将文件对象复制到其他对象中,然后才能对其使用 replace() 方法?
我有使用 Awk 的经验,但我希望这不需要正则表达式,因为我是 Python 的新手。这是我需要改进以解决多个换行符的代码:
marker = [i.strip() for i in open('SomeFile.txt', 'r')]
marker_array = []
for i in marker:
marker_array.append(i.split('\t'))
for i in marker_array:
print i
最佳答案
计数选项卡;如果您假设注释字段的一行中从来没有 4 个制表符,您可以收集注释,直到找到确实有 4 个制表符的行:
def collapse_newlines(s):
# Collapse multiple consecutive newlines into one; removes trailing newlines
return '\n'.join(filter(None, s.split('\n')))
def read_tabbed_file(filename):
with open(filename) as f:
row = None
for line in f:
if line.count('\t') < 4: # Note continuation
row[-1] += line
continue
if row is not None:
row[-1] = collapse_newlines(row[-1])
yield row
row = line.split('\t')
if row is not None:
row[-1] = collapse_newlines(row[-1])
yield row
上面的生成器函数不会产生一行,直到确定下一行没有继续的音符,有效地向前看。
现在使用 read_tabbed_file()
函数作为生成器并遍历结果:
for row in read_tabbed_file(yourfilename):
# row is a list of elements
演示:
>>> open('/tmp/test.csv', 'w').write('User Name\tCode\tTrack\tColor\tNote\n\nUser Name2\tCode2\tTrack2\tColor2\tNote2\n')
>>> for row in read_tabbed_file('/tmp/test.csv'):
... print row
...
['User Name', 'Code', 'Track', 'Color', 'Note']
['User Name2', 'Code2', 'Track2', 'Color2', 'Note2']
关于python - 删除文件中的多个 EOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542077/
这与这个问题非常相似: What is the differrence between `* text=auto` and `* text eol=lf` in .gitattributes? 但我特
Notepad++(甚至使用其他工具)是否有任何方法可以一次性在多个文件上自动更改行结尾? 即将 Windows EOL (CRLF) 和 UNIX EOL (LF) 文件的混合转换为所有 Windo
我正在尝试根据设置更改字符串的行结尾。基本上我有字符串,大多以 LF 结尾,很少有其他东西,但它会发生,并且我希望能够将它们更改为 CRLF 或 CR(如果被要求),或者确保它们是纯粹的 LF(如果被
当我尝试在我的服务器上上传一个 php 文件时,我收到一条消息:"Parse error: ..." 我知道这是什么意思,但问题是别的。 如果我在本地服务器上编辑文件(我的计算机上安装了 XAMPP)
我正在尝试创建一个输出文件以在类项目中使用,但在扫描此行上的字符串文字时它不断给出 EOL: outfile = open(r'C:\Users\kay\Documents\CCA Classes\C
这是我的代码并收到以下错误消息:第 8 行 sepFile=readFile.read().split('\')SyntaxError:扫描字符串文字时 EOL你可以帮帮我吗?谢谢。 import m
我有一个包含\n EOL 字符的制表符分隔文件,看起来像这样: User Name\tCode\tTrack\tColor\tNote\n\nUser Name2\tCode2\tTrack2\tCo
所以我正在尝试使用这段代码 我收到错误 SyntaxError: EOL while scanning string literal 代码: def clean_tweet(self, tweet):
在路径= bla bla行上,它在扫描字符串文字时显示EOL,即使它是用“”关闭的,我在我的代码中经常发生这种情况,这真的很烦人,因为我永远无法修复它。 import os import shutil
我试图在输入字符串中找到每个“a -> b, c, d”模式。我使用的模式如下: "^[ \t]*(\\w+)[ \t]*->[ \t]*(\\w+)((?:,[ \t]*\\w+)*)$" 这个模式
我正在尝试使用简单的所见即所得编辑器。 JSLint 表示它有“Bad escapeing of EOL”。由于我是 javascript 的新手,我很难弄清楚它的含义,因为我正在使用在线找到的代码。
我正在为 Android 编写一个网络应用程序。根据协议(protocol)规范,每行的结尾必须是 CR/LF 组合。虽然我用自己的字符串生成它没有问题,但有时我必须处理用户输入并转换行尾。 我在内部
这个问题应该由 Oracle 支持人员在技术上回答,但他们的响应时间很慢。因此,我想问一下,是否有版本指南提到哪些版本的 Oracle Weblogic 已停产及其日期? http://www.ora
BufferedReader.readLine() 会自动删除 EOL 字符,我不能简单地执行 readLine(),然后在其末尾添加“\r”。我试过了 InputStream myFile = ne
在扫描字符串文字时,它不断出现EOL,但这是什么意思? 这是它不断调用错误的部分: if health2 <= 3: print ("With all the strength you have
我有这个方法: def get_chunksize(path): """ Breaks a file into chunks and yields the chunk sizes.
这个问题在这里已经有了答案: Remove the newline character in a list read from a file [duplicate] (5 个答案) 关闭 8 年前。
基本上我正在用 C 语言编写一个基于文本的角色扮演游戏,我想创建一个 map 系统。基本上,我遇到问题的功能是从如下所示的文件中读取“文本映射”: ----------\n |c x [\n
我正在尝试从给定的 .txt 或 .csv 平面文件中识别 EOL 字符是什么。根据平面文件中第一行数据的 EOL 字符是什么,我想相应地处理该文件中的数据(我正在使用批量加载在 SQL Server
有人可以帮我修改这些脚本以忽略错误并继续运行吗?我只需要弄清楚如何使脚本跳过这些错误并完成其余的行。 这是完整的 Python 脚本: # Import system modules import s
我是一名优秀的程序员,十分优秀!