如何解决如何从 bash 中的文本文件中删除不间断空格?
我有一个包含文本和数字的 csv 文件。 如果数字大于 1000,格式如下:1 000, 所以它有一个空格作为千位分隔符,但它不是空格。我尝试对它进行 sed,它可以在真实空间中工作,但不是这种格式。
它也不是 TAB,我用“expand -t 1”删除了所有 TAB。
以下是说明问题的一行:
x17_Provident_GDN_REMARKETING_provident.hu_listák;display_Hálózat;Szeged;2021-03-09;Kedd;Mobil;HUF;1 736;9;130.83;0.00
倒数第二行第 8 列:1 736
是问题所在。
并运行:grep -E -m 1 -e '[;]1[^;]+736[;]' <yourfile.csv | hexdump -C
给出:
00000000 78 31 37 5f 50 72 6f 76 69 64 65 6e 74 5f 47 44 |x17_Provident_GD|
00000010 4e 5f 52 45 4d 41 52 4b 45 54 49 4e 47 5f 70 72 |N_REMARKETING_pr|
00000020 6f 76 69 64 65 6e 74 2e 68 75 5f 6c 69 73 74 c3 |ovident.hu_list.|
00000030 a1 6b 3b 44 69 73 70 6c 61 79 5f 48 c3 a1 6c c3 |.k;display_H..l.|
00000040 b3 7a 61 74 3b 53 7a 65 67 65 64 3b 32 30 32 31 |.zat;Szeged;2021|
00000050 2d 30 33 2d 30 39 3b 4b 65 64 64 3b 4d 6f 62 69 |-03-09;Kedd;Mobi|
00000060 6c 3b 48 55 46 3b 31 c2 a0 37 33 36 3b 39 3b 31 |l;HUF;1..736;9;1|
00000070 33 30 2e 38 33 3b 30 2e 30 30 0a |30.83;0.00.|
0000007b
解决方法
这是一个 2 字节、UTF-8 编码的 non breaking space - c2 a0
。
您可以使用 perl
安全地删除它。
perl -pe 's/\xc2\xa0//g' dirty.csv > clean.csv
,
在我们知道它是 No break space 之后,我简单地在 mac 上使用 entry 方法将其 sed:
opt+space
cat test4.csv | sed 's/ //g'
,
与 perl 类似,您可以将 GNU itertools
与 from itertools import product
sndf = pd.DataFrame(product(*indexes),columns=sheet_dict.keys()).rename_axis("scenario")
sndf.index += 1
一起使用:
sed
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。