2016-06-02 1 views
0

Je veux générer la ligne suivante (s)entrée Concaténation deux fichiers différents dans un fichier séparé

1 & {\QPCSymbols\XeTeXglyph 2} & \textarabic{الحمدلله} & \texttt{!} & \verb$\XeTeXglyph 2$ \\ 
\hline 

Disons que le premier numéro est n et le second est n+1, le contenu de \textarabic est obtenu à partir de f_nusoos et le contenu de \texttt de f_keys. Les deux fichiers ont le même nombre de lignes.

J'ai créé un script Python3 qui devrait me donner ce que je veux mais je me retrouve avec de nouveaux symboles de ligne (\n).

Voici ce que j'ai jusqu'à présent,

#! python3 
import linecache 

f_nusoos = 'symbol_nass_list.txt' 
f_keys = 'symbol_key_list.txt' 
contentfile = open('content.tex', 'w+', encoding="utf-8") 

theLine = " " 

for x in range(3): 
    contentfile.write('{} & {{\QPCSymbols\XeTeXglyph {}}} & \\textarabic{{{}}} & \\texttt{{{}}} & \\verb$\XeTeXglyph {}$ \\\\'.format(x+1, x+2,linecache.getline(f_nusoos, x+1).rstrip('\n'), linecache.getline(f_keys, x+1), x+2).rstrip('\n')) 
    contentfile.write('\hline') 

Le contenu de content.tex après l'exécution est,

1 & {\QPCSymbols\XeTeXglyph 2} & \textarabic{بسم الله الرحمن الرحيم} & \texttt{! 
} & \verb$\XeTeXglyph 2$ \\\hline2 & {\QPCSymbols\XeTeXglyph 3} & \textarabic{بسم الله الرحمن الرحيم} & \texttt{" 
} & \verb$\XeTeXglyph 3$ \\\hline3 & {\QPCSymbols\XeTeXglyph 4} & \textarabic{بسم الله الرحمن الرحيم} & \texttt{# 
} & \verb$\XeTeXglyph 4$ \\\hline 

Mon attente, cependant,

1 & {\QPCSymbols\XeTeXglyph 2} & \textarabic{بسم الله الرحمن الرحيم} & \texttt{!} & \verb$\XeTeXglyph 2$\\ 
\hline 
2 & {\QPCSymbols\XeTeXglyph 3} & \textarabic{بسم الله الرحمن الرحيم} & \texttt{"} & \verb$\XeTeXglyph 3$\\ 
\hline 
3 & {\QPCSymbols\XeTeXglyph 4} & \textarabic{بسم الله الرحمن الرحيم} & \texttt{#} & \verb$\XeTeXglyph 4$\\ 
\hline 

Le problème semble être une nouvelle ligne insérée après texttt{CONTENT. Je ne sais pas pourquoi c'est.

Contenu de f_nusoos.txt:

بسم الله الرحمن الرحيم 
بسم الله الرحمن الرحيم 
بسم الله الرحمن الرحيم 

Contenu de f_keys.txt:

! 
" 
# 
+0

Se pourrait-il que le caractère de fin de ligne ne soit pas '\ n', mais' \ r \ n' (Windows) ou '\ r' (MacOS)? Cela expliquerait pourquoi 'rstrip ('\ n')' ne fonctionne pas. Peut-être que 'rstrip()' sans paramètre est suffisant. –

Répondre

0

Je regardais cela depuis trop longtemps.

Au lieu de

contentfile.write('{} & {{\QPCSymbols\XeTeXglyph {}}} & \\textarabic{{{}}} & \\texttt{{{}}} & \\verb$\XeTeXglyph {}$ \\\\'.format(x+1, x+2,linecache.getline(f_nusoos, x+1).rstrip('\n'), linecache.getline(f_keys, x+1), x+2).rstrip('\n')) 

il devrait être

contentfile.write('{} & {{\QPCSymbols\XeTeXglyph {}}} & \\textarabic{{{}}} & \\texttt{{{}}} & \\verb$\XeTeXglyph {}$ \\\\'.format(x+1, x+2,linecache.getline(f_nusoos, x+1).rstrip('\n'), linecache.getline(f_keys, x+1).rstrip('\n'), x+2)) 

Le rstrip() devrait être pour l'entrée à partir du fichier et non pour le compteur.